#2012/01/07#
前幾天,同事請我看Solaris上的一支前人寫的備份shell script,每次備完都會留下很大的tar檔,問我是否可以在shell script加入刪檔的程序,當我測試這支script時,發現其備份時間非常的長,原因是某log目錄下有幾十萬支的檔案,於是寫了一支簡易的封存shell script如下:
因為檔名裡都有完整的日期,前置處理比較容易。
#!/usr/bin/sh
cd /log
DAYLIST="01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31"
MONTHLIST="01 02 03 04 05 06 07 08 09 10 11 12"
for YEAR in 2010 2011;do
for MONTH in $MONTHLIST;do
MDATE=$YEAR$MONTH
ZIPFILE=$MDATE.zip
for DAY in $DAYLIST;do
EDATE=$YEAR$MONTH$DAY
ls *-$EDATE* > $EDATE.txt
if [ ! $? = 0 ];then
continue
fi
if [ ! -f $EDATE.tar ];then
touch $EDATE.tar
fi
cat $EDATE.txt | xargs -n 50 tar uvf $EDATE.tar
done
zip -j -m $MDATE.zip $MDATE*.tar
rm $MDATE*.txt
if [ -f $MDATE.zip ];then
mv $MDATE.zip ./bak
cat $EDATE.txt | xargs -n 50 rm -f
fi
done
done