★背景:程序自动生成日志文件,一天生成一个目录,目录下为每小时生成的目录,即24个目录,小时目录下为文件。因文件较大,须要配置脚本按期进行压缩并删除几天前的文件。shell
★目标文件结构及内容以下:ide
X3950x5-/opt/BOCO.DAL/AFM_LOG> lsspa
20141215 20141216 20141217 autobakdel.sh日志
X3950x5-/opt/BOCO.DAL/AFM_LOG> cd 20141215crontab
X3950x5-/opt/BOCO.DAL/AFM_LOG/20141215> lsip
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23rem
X3950x5-/opt/BOCO.DAL/AFM_LOG/20141215> cd 23it
X3950x5-/opt/BOCO.DAL/AFM_LOG/20141215/23> lsio
AFM_10001_8790.data.0.LOG AFM_10001_9404.data.3.LOG AFM_20001_100-103.index.0.LOG AFM_20001_100-111.state.3.LOG AFM_20001_100-501.state.0.LOGfunction
AFM_10001_8790.data.1.LOG AFM_10001_9404.data.4.LOG AFM_20001_100-103.index.1.LOG AFM_20001_100-111.state.4.LOG
★下边为自动压缩并删除的脚本。
X3950x5-/opt/BOCO.DAL/AFM_LOG> more autobakdel.sh
#!/bin/csh
#it is a shell script which provides function of auto backup and delete logfiles regularly
#by fuxueli
set despath=/opt/BOCO.DAL/AFM_LOG
###########查找一天前的目录并压缩,删除源文件############
set dir=`find $despath/ -maxdepth 1 -type d -ctime +1 | grep -v .gz`
foreach i($dir)
tar zcvf $i.tar.gz $i --remove-files
end
##############删除三天前的文件##########################
find $despath/ -ctime +3 -exec rm -rf {} \;
完成后添加到crontab中自动执行便可。