#!/bin/bash listToProcessFile="${1}" switchtotar=0 # gpdebug : a modifier --> s'occuper des options du script orig enlarge.sh maxtries=2 # On renseigne les variables d'environnement . load_ipslPack_env.sh dirin=$INPUT_DMF_DATA dirout=$OUTPUT_STORE dirout_work=$OUTPUT_WORK export JOB_DIR=${TMP_MIGR_DATA} export EXE_DIR=${LS_SUBCWD:-${PWD}} source ${EXE_DIR}/DEM_utilities.sh #------------------------------------------------------ baseNameOfListFile=$( basename $listToProcessFile ) dirPathOfListFile=$( dirname $listToProcessFile ) dirnameOfListFile=$( basename $dirPathOfListFile ) echo "dirnameOfListFile ==> $dirnameOfListFile" if ( \ [ $dirnameOfListFile != "output_ncrcat" ] && \ [ $dirnameOfListFile != "output_tar" ] && \ [ $dirnameOfListFile != "restart_tar" ] && \ [ $dirnameOfListFile != "store_cp" ] && \ [ $dirnameOfListFile != "work_cp" ] && \ [ $dirnameOfListFile != "debug_tar" ] && \ [ $dirnameOfListFile != "other_tar" ] \ ) \ && \ [ $baseNameOfListFile != "tar_full_simul.list" ] then echo "probleme : le rep du fichier liste est mauvais." # gpdebug : a modifier exit 1 fi function find_varstoexclude { nbfile=0 for file in `cat $1` ; do # ncdump -h ${file} | gawk '{if (match($0, /(byte|char|short|int|float|double) (.*)\(/, arr)) print arr[2] }' >> tmp_$$.txt ncdump -h ${file} | grep -Ew "byte|char|short|int|float|double" | awk -F\( '{split($1,a," ") ; split($2,b,")") ; if (a[2] != b[1]) print a[2]}' >> ${JOB_DIR}/tmp_$$.txt let nbfile=nbfile+1 done varstoexclude=`cat ${JOB_DIR}/tmp_$$.txt | sort | uniq -c | awk -v nbfile=$nbfile '{if ($1 != nbfile) {print $2}}' | paste -s -d','` varstoexcludefiltered=`cat ${JOB_DIR}/tmp_$$.txt | sort | uniq -c | awk -v nbfile=$nbfile '{if (($1 != nbfile) && !(match($2, /t_inst_(.*)/))) {print $2}}' | paste -s -d','` nbvars=`echo $varstoexcludefiltered | gawk -F',' '{print NF}'` rm -f tmp_$$.txt return 0 } # gpdebug : pour test showPackProgress.sh ************************* export RANDOM=$$ function gives_0_or_1 { bit=-1 let "bit = RANDOM % 2" echo $bit } resultCmd= # gpdebug : ****************************** fin ******************** # rep de simu : celui contenant le rep qui contient la liste PATH_SIMU=$( dirname $dirPathOfListFile ) set=$listToProcessFile if [ "$dirnameOfListFile" == "output_ncrcat" ] then #----------------------------------- echo "#-------------------" echo "Set: $set" datestr=`LC_ALL=C date +"%Y%m%dT%H%M%S"` datestr1=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` statusfile=${set%%.list}.status logfile=${set%%.list}_${datestr}.log # echo "output_ncrcat : blabla 0" #----------------------------------- # Create status file if not exists if [ ! -e $statusfile ] ; then echo "# Status ; DateStart ; DateEnd ; Command ; TarFileExists" > $statusfile fi # Switch to tar command if [ $switchtotar -eq 1 ] ; then echo "====> DELEGATE to tar command with option --switchtotar" echo "DELEGATE to tar command with option --switchtotar" >> $statusfile mkdir -p $PATH_SIMU/output_tar mv $set $PATH_SIMU/output_tar exit 5 fi # # Skip the set if last line of the status file is "DELEGATE" # if tail -1 $statusfile | grep -q -E 'DELEGATE' ; then # printf "====> " # tail -1 $statusfile # exit 50 # fi # Skip the set if last line of the status file is "COMPLETED" if tail -1 $statusfile | grep -q -E '(COMPLETED|DELEGATE)' ; then printf "====> " tail -1 $statusfile exit 0 fi #----------------------------------- # nbtries = number of lines from status file (first comment line gives 1 for the first try) nbtries=`wc -l $statusfile | cut -d' ' -f1` echo "Nb of tries: $nbtries" #----------------------------------- # Set output file name from list name fileout1=$( basename $set ) fileout=${fileout1%.list} filefirst=`head -n 1 $set` diroutputfile=`dirname $filefirst | sed -e "s%$dirin%$dirout%"` outputfile=$diroutputfile/${fileout} mkdir -p $diroutputfile echo "Output file to write: $outputfile output_ncrcat" #----------------------------------- # Find variables to exclude to have homogeneous files (always exclude 't_inst_.*') extratar=0 find_varstoexclude $set if [ $nbvars -eq 0 ] ; then varstoexclude="t_inst_.*" else # There are others variables than 't_inst_.*' so an extra tar file will be created varstoexclude="t_inst_.*,$varstoexcludefiltered" extratar=1 # Copy to output_tar directory echo "====> COPY to tar command because find other variables ($varstoexcludefiltered) than t_inst_*" # echo "COPY to tar command because find other variables ($varstoexcludefiltered) than t_inst_*" >> $statusfile mkdir -p $PATH_SIMU/output_tar cp $set $PATH_SIMU/output_tar fi #----------------------------------- # Try 2 times before fire "FAILED" ncrcatcmd=ncrcat ncrcatoptions="--md5_digest" # ncrcatoptions="" startTime=$( getDateMilliSeconds ) # gpdebug : time resCmd=0 cat $set | $ncrcatcmd $ncrcatoptions -O -x -v $varstoexclude -o $outputfile > $logfile 2>&1 # gpdebug : a retablir resCmd=$? meantime=$( getTimeDiffSeconds $startTime ) # gpdebug : time # resultCmd=$( gives_0_or_1 ) # resultCmd=1 # if [ $resultCmd -eq 0 ] ; then if [ $resCmd -eq 0 ] ; then sed -i "1i\meantime:${meantime}" $statusfile # gpdebug : time datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "DONE ; $datestr1 ; $datestr2 ; cat $set | $ncrcatcmd $ncrcatoptions -O -x -v '$varstoexclude' -o $outputfile ; $logfile ; $extratar" >> $statusfile echo "====> COMPLETED at try #$nbtries (at 1st shot on 2)" echo "COMPLETED at try #$nbtries (at 1st shot on 2)" >> $statusfile # exit 10 : il faut tarer cette liste dans "output_tar" et tenter de la concatener a nouveau # exit 5 : seulement la tarer dans "output_tar" if [ "x${extratar}" == "x1" ] then exit 5 fi else # Add --md5_digest rm -f $outputfile*ncrcat.tmp startTime=$( getDateMilliSeconds ) # gpdebug : time resCmd=0 cat $set | $ncrcatcmd $ncrcatoptions -O -x -v $varstoexclude -o $outputfile > $logfile 2>&1 # gpdebug : a retablir resCmd=$? meantime=$( getTimeDiffSeconds $startTime ) # gpdebug : time # resultCmd=$( gives_0_or_1 ) # resultCmd=1 # if [ $resultCmd -eq 0 ] ; then if [ $resCmd -eq 0 ] ; then sed -i "1i\meantime:${meantime}" $statusfile # gpdebug : time datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "DONE ; $datestr1 ; $datestr2 ; cat $set | $ncrcatcmd $ncrcatoptions -O -x -v '$varstoexclude' -o $outputfile ; $logfile ; $extratar" >> $statusfile echo "====> COMPLETED at try #$nbtries (at 2nd shot on 2)" echo "COMPLETED at try #$nbtries (at 2nd shot on 2)" >> $statusfile if [ "x${extratar}" == "x1" ] then exit 5 fi else datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` rm -f $outputfile*ncrcat.tmp echo "====> FAILED at try #$nbtries" echo "FAILED at try #$nbtries ; $datestr1 ; $datestr2 ; cat $set | $ncrcatcmd $ncrcatoptions -O -x -v '$varstoexclude' -o $outputfile ; $logfile ; $extratar" >> $statusfile if [ $nbtries -ge $maxtries ] ; then echo "====> DELEGATE to tar command after $nbtries tries (maxtries=$maxtries)" echo "DELEGATE to tar command after $nbtries tries (maxtries=$maxtries)" >> $statusfile mkdir -p $PATH_SIMU/output_tar cp $set $PATH_SIMU/output_tar # gpdebug : a retablir exit 5 fi # exit 10 : il faut tarer cette liste dans "output_tar" et tenter de la concatener a nouveau # exit 5 : seulement la tarer dans "output_tar" if [ "x${extratar}" == "x1" ] then exit 10 else exit 1 fi fi fi fi #------------------------------------------------------ if [ "$dirnameOfListFile" == "output_tar" ] then #----------------------------------- echo "#-------------------" echo "Set: $set" datestr=`LC_ALL=C date +"%Y%m%dT%H%M%S"` datestr1=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` statusfile=${set%%.list}.status logfile=${set%%.list}_${datestr}.log #----------------------------------- # Create status file if not exists if [ ! -e $statusfile ] ; then echo "# Status ; DateStart ; DateEnd ; Command ; TarFileExists" > $statusfile fi #----------------------------------- # Skip the set if last line of the status file is "COMPLETED" or "DELEGATE" if tail -1 $statusfile | grep -q -E '(COMPLETED)' ; then printf "====> " tail -1 $statusfile fi #----------------------------------- # nbtries = number of lines from status file (first comment line gives 1 for the first try) nbtries=`wc -l $statusfile | cut -d' ' -f1` # echo "Nb of tries: $nbtries" #----------------------------------- # Set output file name from list name fileout1=$( basename $set ) fileout=${fileout1%.list}.tar filefirst=`head -n 1 $set` dirinputfile=`dirname $filefirst` diroutputfile=`dirname $filefirst | sed -e "s%$dirin%$dirout%"` outputfile=$diroutputfile/${fileout} mkdir -p $diroutputfile echo "Output file to write: $outputfile output_tar" #----------------------------------- # Try 1 time before fire "FAILED" # Waiting for CCRT command tarcmd=tar taroptions="--format=posix -W -cf" cd $dirinputfile set_local=$set".local" for file in $( cat $set) ; do basename $file >> $set".local" done # #----------------------------------- startTime=$( getDateMilliSeconds ) # gpdebug : time resCmd=0 $tarcmd $taroptions $outputfile --dereference --files-from $set.local > $logfile 2>&1 # gpdebug : a retablir resCmd=$? meantime=$( getTimeDiffSeconds $startTime ) # gpdebug : time # resultCmd=$( gives_0_or_1 ) # if [ $resultCmd -eq 0 ] ; then if [ $resCmd -eq 0 ] ; then sed -i "1i\meantime:${meantime}" $statusfile # gpdebug : time datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "DONE ; $datestr1 ; $datestr2 ; $tarcmd $taroptions $outputfile $(cat $set); $logfile" >> $statusfile echo "====> COMPLETED at try #$nbtries (at 1st shot on 1)" echo "COMPLETED at try #$nbtries (at 1st shot on 1)" >> $statusfile else datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "====> FAILED at try #$nbtries" echo "FAILED at try #$nbtries ; $datestr1 ; $datestr2 ; $tarcmd $taroptions $outputfile $(cat $set) ; $logfile" >> $statusfile exit 50 fi rm -f $set".local" #----------------------------------- fi #------------------------------------------------------ if [ "$dirnameOfListFile" == "restart_tar" ] then #----------------------------------- echo "#-------------------" echo "Set: $set" datestr=`LC_ALL=C date +"%Y%m%dT%H%M%S"` datestr1=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` statusfile=${set%%.list}.status logfile=${set%%.list}_${datestr}.log #----------------------------------- # Create status file if not exists if [ ! -e $statusfile ] ; then echo "# Status ; DateStart ; DateEnd ; Command ; TarFileExists" > $statusfile fi #----------------------------------- # Skip the set if last line of the status file is "COMPLETED" or "DELEGATE" if tail -1 $statusfile | grep -q -E '(COMPLETED)' ; then printf "====> " tail -1 $statusfile exit 0 fi #----------------------------------- # nbtries = number of lines from status file (first comment line gives 1 for the first try) nbtries=`wc -l $statusfile | cut -d' ' -f1` # echo "Nb of tries: $nbtries" #----------------------------------- # Set output file name from list name dirin1=$PATH_SIMU/RESTART dirin2=${dirin1##${IGCM_DEM}} dirin3=${dirin2##/$( basename ${INPUT_DMF_DATA} )} diroutputfile=${OUTPUT_STORE}${dirin3} fileout1=$( basename $set ) fileout=${fileout1%.list}.tar outputfile=$diroutputfile/${fileout} mkdir -p $diroutputfile echo "Output file to write: $outputfile restart_tar" #----------------------------------- # Try 1 time before fire "FAILED" # Waiting for CCRT command tarcmd=tar taroptions="--format=posix -W -cf" cd $dirin1 # ls startTime=$( getDateMilliSeconds ) # gpdebug : time resCmd=0 $tarcmd $taroptions $outputfile --dereference --files-from $set > $logfile 2>&1 # gpdebug : a retablir resCmd=$? meantime=$( getTimeDiffSeconds $startTime ) # gpdebug : time # resultCmd=$( gives_0_or_1 ) # if [ $resultCmd -eq 0 ] ; then if [ $resCmd -eq 0 ] ; then sed -i "1i\meantime:${meantime}" $statusfile # gpdebug : time datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "DONE ; $datestr1 ; $datestr2 ; $tarcmd $taroptions $outputfile $(cat $set); $logfile" >> $statusfile echo "====> COMPLETED at try #$nbtries (at 1st shot on 1)" echo "COMPLETED at try #$nbtries (at 1st shot on 1)" >> $statusfile else datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "====> FAILED at try #$nbtries" echo "FAILED at try #$nbtries ; $datestr1 ; $datestr2 ; $tarcmd $taroptions $outputfile $(cat $set) ; $logfile" >> $statusfile exit 50 fi #----------------------------------- fi #------------------------------------------------------ if [ "$dirnameOfListFile" == "debug_tar" ] then #----------------------------------- echo "#-------------------" echo "Set: $set" datestr=`LC_ALL=C date +"%Y%m%dT%H%M%S"` datestr1=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` statusfile=${set%%.list}.status logfile=${set%%.list}_${datestr}.log #----------------------------------- # Create status file if not exists if [ ! -e $statusfile ] ; then echo "# Status ; DateStart ; DateEnd ; Command ; TarFileExists" > $statusfile fi #----------------------------------- # Skip the set if last line of the status file is "COMPLETED" or "DELEGATE" if tail -1 $statusfile | grep -q -E '(COMPLETED)' ; then printf "====> " tail -1 $statusfile exit 0 fi #----------------------------------- # nbtries = number of lines from status file (first comment line gives 1 for the first try) nbtries=`wc -l $statusfile | cut -d' ' -f1` # echo "Nb of tries: $nbtries" #----------------------------------- # Set output file name from list name dirin1=$PATH_SIMU/DEBUG dirin2=${dirin1##${IGCM_DEM}} dirin3=${dirin2##/$( basename ${INPUT_DMF_DATA} )} diroutputfile=${OUTPUT_STORE}${dirin3} fileout1=$( basename $set ) fileout=${fileout1%.list}.tar outputfile=$diroutputfile/${fileout} mkdir -p $diroutputfile echo "Output file to write: $outputfile debug_tar" #----------------------------------- # Try 1 time before fire "FAILED" # Waiting for CCRT command tarcmd=tar taroptions="--format=posix -W -cf" cd $dirin1 # ls resCmd=0 startTime=$( getDateMilliSeconds ) # gpdebug : time $tarcmd $taroptions $outputfile --dereference --files-from $set > $logfile 2>&1 # gpdebug : a retablir resCmd=$? meantime=$( getTimeDiffSeconds $startTime ) # gpdebug : time # resultCmd=$( gives_0_or_1 ) # if [ $resultCmd -eq 0 ] ; then if [ $resCmd -eq 0 ] ; then sed -i "1i\meantime:${meantime}" $statusfile # gpdebug : time datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "DONE ; $datestr1 ; $datestr2 ; $tarcmd $taroptions $outputfile $(cat $set); $logfile" >> $statusfile echo "====> COMPLETED at try #$nbtries (at 1st shot on 1)" echo "COMPLETED at try #$nbtries (at 1st shot on 1)" >> $statusfile else datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "====> FAILED at try #$nbtries" echo "FAILED at try #$nbtries ; $datestr1 ; $datestr2 ; $tarcmd $taroptions $outputfile $(cat $set) ; $logfile" >> $statusfile exit 50 fi #----------------------------------- fi #------------------------------------------------------ if [ "$dirnameOfListFile" == "store_cp" ] then #----------------------------------- echo "#-------------------" echo "Set: $set" datestr=`LC_ALL=C date +"%Y%m%dT%H%M%S"` datestr1=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` statusfile=${set%%.list}.status logfile=${set%%.list}_${datestr}.log #----------------------------------- # Create status file if not exists if [ ! -e $statusfile ] ; then echo "# Status ; DateStart ; DateEnd ; Command ; TarFileExists" > $statusfile fi #----------------------------------- # Skip the set if last line of the status file is "COMPLETED" or "DELEGATE" if tail -1 $statusfile | grep -q -E '(COMPLETED)' ; then printf "====> " tail -1 $statusfile exit 0 fi #----------------------------------- # nbtries = number of lines from status file (first comment line gives 1 for the first try) nbtries=`wc -l $statusfile | cut -d' ' -f1` # echo "Nb of tries: $nbtries" meantime=0 resCmd=0 startTime=$( getDateMilliSeconds ) # gpdebug : time #----------------------------------- # Set output file name from first and last files from the current set for file in $( cat $set) ; do diroutputfile=`dirname $file | sed -e "s%$dirin%$dirout%"` mkdir -p $diroutputfile echo "Output file to write: $diroutputfile/$( basename $file ) store_cp" #----------------------------------- # Try 1 time before fire "FAILED" # Waiting for CCRT command cpcmd="cp " cpoptions="-rf" $cpcmd $cpoptions $file $diroutputfile > $logfile 2>&1 # gpdebug : a retablir resCmd=$(( $resCmd || $? )) done meantime=$( getTimeDiffSeconds $startTime ) # gpdebug : time # resultCmd=$( gives_0_or_1 ) # if [ $resultCmd -eq 0 ] ; then if [ $resCmd -eq 0 ] ; then sed -i "1i\meantime:${meantime}" $statusfile # gpdebug : time datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "DONE ; $datestr1 ; $datestr2 ; $cpcmd $cpoptions $file $diroutputfile ; $logfile" >> $statusfile echo "====> COMPLETED at try #$nbtries (at 1st shot on 1)" echo "COMPLETED at try #$nbtries (at 1st shot on 1)" >> $statusfile else datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "====> FAILED at try #$nbtries" echo "FAILED at try #$nbtries ; $datestr1 ; $datestr2 ; $cpcmd $cpoptions $file $diroutputfile ; $logfile" >> $statusfile exit 50 fi #----------------------------------- fi #------------------------------------------------------ if [ "$dirnameOfListFile" == "work_cp" ] then #----------------------------------- echo "#-------------------" echo "Set: $set" datestr=`LC_ALL=C date +"%Y%m%dT%H%M%S"` datestr1=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` statusfile=${set%%.list}.status logfile=${set%%.list}_${datestr}.log #----------------------------------- # Create status file if not exists if [ ! -e $statusfile ] ; then echo "# Status ; DateStart ; DateEnd ; Command ; TarFileExists" > $statusfile fi #----------------------------------- # Skip the set if last line of the status file is "COMPLETED" or "DELEGATE" if tail -1 $statusfile | grep -q -E '(COMPLETED)' ; then printf "====> " tail -1 $statusfile exit 0 fi #----------------------------------- # nbtries = number of lines from status file (first comment line gives 1 for the first try) nbtries=`wc -l $statusfile | cut -d' ' -f1` # echo "Nb of tries: $nbtries" meantime=0 resCmd=0 startTime=$( getDateMilliSeconds ) # gpdebug : time #----------------------------------- # Set output file name from first and last files from the current set for file in $( cat $set) ; do diroutputfile=`dirname $file | sed -e "s%$dirin%$dirout_work%"` mkdir -p $diroutputfile echo "Output file to write: $diroutputfile/$( basename $file ) work_cp" #----------------------------------- # Try 1 time before fire "FAILED" # Waiting for CCRT command cpcmd="cp " cpoptions="-rf" $cpcmd $cpoptions $file $diroutputfile > $logfile 2>&1 # gpdebug : a retablir resCmd=$(( $resCmd || $? )) done meantime=$( getTimeDiffSeconds $startTime ) # gpdebug : timeS # resultCmd=$( gives_0_or_1 ) # if [ $resultCmd -eq 0 ] ; then if [ $resCmd -eq 0 ] ; then sed -i "1i\meantime:${meantime}" $statusfile # gpdebug : time datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "DONE ; $datestr1 ; $datestr2 ; $cpcmd $cpoptions $file $diroutputfile ; $logfile" >> $statusfile echo "====> COMPLETED at try #$nbtries (at 1st shot on 1)" echo "COMPLETED at try #$nbtries (at 1st shot on 1)" >> $statusfile else datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "====> FAILED at try #$nbtries" echo "FAILED at try #$nbtries ; $datestr1 ; $datestr2 ; $cpcmd $cpoptions $file $diroutputfile ; $logfile" >> $statusfile exit 50 fi #----------------------------------- fi # gpdebug : traitement des simu < 1 Go ou de type create_etat0 # il n'est censé n'y avoir qu'un seul fichier tar_full_simul.list par simu. # d'ou le "if" et non le "for" # pense bete : # * implication dans showPackProgress.sh (fichier status) ? if [ "$baseNameOfListFile" == "tar_full_simul.list" ] then # set="${PATH_SIMU}/tar_full_simul.list" # gpdebug : foireux ? #----------------------------------- echo "#-------------------" echo "Set: $set" datestr=`LC_ALL=C date +"%Y%m%dT%H%M%S"` datestr1=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` statusfile=${set%%.list}.status logfile=${set%%.list}_${datestr}.log #----------------------------------- # Create status file if not exists if [ ! -e $statusfile ] ; then echo "# Status ; DateStart ; DateEnd ; Command ; TarFileExists" > $statusfile fi #----------------------------------- # Skip the set if last line of the status file is "COMPLETED" or "DELEGATE" if tail -1 $statusfile | grep -q -E '(COMPLETED)' ; then printf "====> " tail -1 $statusfile exit 0 fi #----------------------------------- # Set output file name from list name # echo "PATH_SIMU=$PATH_SIMU" dirOfOutputFile=`echo $PATH_SIMU | sed "s;${IGCM_DEM};${OUTPUT_STORE};" ` fileout=${dirnameOfListFile}.tar # echo "dirnameOfListFile=$dirnameOfListFile" outputfile=$dirOfOutputFile/${fileout} mkdir -p $dirOfOutputFile echo "Output file to write: $outputfile tar_full_simul" # exit 0 # a virer #----------------------------------- # Try 1 time before fire "FAILED" # Waiting for CCRT command tarcmd=tar taroptions="--format=posix -W -cf" # taroptions="--format=posix -cf" filefirst=`head -n 1 $set` dirinputfile=`dirname $filefirst` cd $dirinputfile set_local=${set%%.list}.local > $set_local for file in $( cat $set) ; do basename $file >> $set_local done # ls startTime=$( getDateMilliSeconds ) # gpdebug : time resCmd=0 $tarcmd $taroptions $outputfile --dereference --files-from $set_local > $logfile 2>&1 # gpdebug : a retablir resCmd=$? meantime=$( getTimeDiffSeconds $startTime ) # gpdebug : time # resultCmd=$( gives_0_or_1 ) # if [ $resultCmd -eq 0 ] ; then if [ $resCmd -eq 0 ] ; then sed -i "1i\meantime:${meantime}" $statusfile # gpdebug : time datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "DONE ; $datestr1 ; $datestr2 ; $tarcmd $taroptions $outputfile $(cat $set); $logfile" >> $statusfile echo "====> COMPLETED at try #$nbtries (at 1st shot on 1)" echo "COMPLETED at try #$nbtries (at 1st shot on 1)" >> $statusfile else datestr2=`LC_ALL=C date +"%Y-%m-%dT%H:%M:%S"` echo "====> FAILED at try #$nbtries" echo "FAILED at try #$nbtries ; $datestr1 ; $datestr2 ; $tarcmd $taroptions $outputfile $(cat $set) ; $logfile" >> $statusfile exit 50 fi #----------------------------------- fi if [ "$dirnameOfListFile" == "other_tar" ] then exit 50 fi