★背景:程序自动生成日志文件,一天生成一个目录,目录下为每小时生成的目录,即24个目录,小时目录下为文件。因文件较大,需要配置脚本定期进行压缩并删除几天前的文件。
★目标文件结构及内容如下:
X3950x5-/opt/BOCO.DAL/AFM_LOG> ls
20141215 20141216 20141217 autobakdel.sh
X3950x5-/opt/BOCO.DAL/AFM_LOG> cd 20141215
X3950x5-/opt/BOCO.DAL/AFM_LOG/20141215> ls
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
X3950x5-/opt/BOCO.DAL/AFM_LOG/20141215> cd 23
X3950x5-/opt/BOCO.DAL/AFM_LOG/20141215/23> ls
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.LOG
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中自动执行即可。