#!/bin/csh
##
#

set file = ""
set bagdir = "/data"

# old path 01 ; 02
set externals = ("/data01" "/data02" "/data03")
# new path 02 ; 01
#set externals = ("/data02" "/data01")
set nexternal = `echo $externals | wc -w | awk '{printf("%d", $1)}'`

echo $nexternal $externals

# before 1 minute
set files = "" 

if($bagdir == "") then
  echo ""
  echo " error : bagdir not given"
  echo ""
  exit
endif
if( ! -e $bagdir ) then
  echo ""
  echo " error : bagdir not exist, $bagdir"
  echo ""
  exit
endif

cd $bagdir
while(1)
  set bagfiles = `find . -mmin +1 -name '*.bag'`
  set nbagfile = `echo $bagfiles | wc -w | awk '{printf("%d", $1)}'`
  set ii = 0
  while($ii < $nbagfile)
    set ii = `echo $ii | awk '{printf("%d", $1+1)}'`
    set dir  = `dirname $bagfiles[$ii]`
    set file = `basename $bagfiles[$ii]`
    if($dir != ".") then
      set dir = `echo $dir | cut -d/ -f2-`
    endif
    echo $dir $file

    # bag file size
    set du = `du -BG $bagfiles[$ii] | awk '{print $1}' | cut -dG -f1 | awk '{printf("%d", $1)}'`

    set jj = 0
    while($jj < $nexternal)
      set jj = `echo $jj | awk '{printf("%d", $1+1)}'`
      set kk = `mount  | grep -w $externals[$jj] |  wc -l | awk '{printf("%d", $1)}'`
      if($kk == 0) then
        continue
      endif
      
      #
      set df = `df -BG $externals[$jj] | awk '(NR == 2){print $4}' | cut -dG -f1 | awk '{printf("%d", $1)}'`
      echo $jj $externals[$jj] $du $df
      if($du < $df) then
        break
      endif
    end
    
    if($jj > $nexternal) then
      echo " there is no space on $externals"
      continue
    endif

    if( ! -d $externals[$jj]/$dir) then
      mkdir -p $externals[$jj]/$dir
    endif

    if( ! -d $externals[$jj]/$dir) then
      echo ""
      echo " error : dir not exist, $externals[$jj]/$dir"
      echo ""
      continue
    endif
    
    echo "cp $bagdir/$dir/$file to $externals[$jj]/$dir/$file"
    set t1 = `date +%s | awk '{printf("%d", $1)}'`
    cp $bagdir/$dir/$file $externals[$jj]/$dir/$file
    if($status == 0) then
      set t2 = `date +%s | awk '{printf("%d", $1)}'`
      set dt = `echo $t1 $t2 | awk '{printf("%d", $2-$1)}'`
      echo "cp $bagdir/$dir/$file to $externals[$jj]/$dir/$file success and cost time is ${dt}s"

      # delete 
      rm -rf $bagdir/$dir/$file >&/dev/null
    else
      echo "cp $bagdir/$dir/$file to $externals[$jj]/$dir/$file falied"
    endif
  end
  echo "-----------------------------------------------------"
  sleep 10
end

echo "OK"

exit

