バックアップ用スクリプト 大体ハードディスクというものは忙しいときに限って壊れるものです. (単純に書き込み,読み出しの回数が増えるからかもしれませんが,  筆者はD論提出直前の一ヶ月でPC2台,ラップトップ1台,外付けHDD1台を壊し,  一時あぶない電磁波を出しているのではないかと噂されました.) そんなわけでこまめにバックアップを取る事はたいへん重要です. しかし,数値モデルや衛星データを使う人は データ,アウトプットを含めて数TBに達していることが 多いでしょう. そういう場合はプログラム,スクリプト等のみを バックアップする必要があります. というわけでそんなスクリプトを先日作ってみました. とりあえず適当に作ったので, 今後色々改良を加えていくつもりです. #!/bin/csh -f set BAKDIR="/home/t3d3/somak/backup_t3d3" #set EXT1=".f" set DATDIR="/home/t3d3/somak" set EXTLIST=".f .f90 .inc .c .cpp .h .csh .sh .pl .ctl .gs .gnu .ncl .txt" set EXCEPT1="" foreach TEMP1 (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) foreach TEMP2 (1998 1999 2000 2001 2002 2003 2004 2005 2006 2007) set TEMP3="/home/t3d3/somak/TRMM/data/3G68/${TEMP2}/${TEMP1}" set EXCEPT1="${EXCEPT1} ${TEMP3}" end end set WORKDIR=`pwd` set YMDNUM=`date +%Y%m%d` foreach EXT1 (`echo ${EXTLIST}`) echo ${EXT1} foreach FNUM1 (`find ${DATDIR} -name "*${EXT1}" -print`) # echo ${FNUM1} set DIR1=`dirname ${FNUM1}` # echo ${DIR1} set DIR2=`echo ${DIR1} \ | sed -e "s%${WORKDIR}%${BAKDIR}%"` set FNUM2=`echo ${FNUM1} \ | sed -e "s%${WORKDIR}%${BAKDIR}%"` @ COUNT = 0 if(${EXT1} == ".txt") then foreach EXC1 (`echo ${EXCEPT1}`) # echo ${EXC1} if(${DIR1} == ${EXC1}) then @ COUNT ++ echo "except " ${DIR1} ${COUNT} else endif end endif if(!(-d ${DIR2})) then echo ${DIR2} mkdir -p ${DIR2} endif if($COUNT == 0) then if(!(-f ${FNUM2})) then echo ${FNUM2} cp ${FNUM1} ${DIR2} else cp -u ${FNUM1} ${DIR2} endif endif end end tar -zcvf ${BAKDIR}_${YMDNUM}.tar.gz ${BAKDIR} rm -rf ${BAKDIR}