在第二版中,备份目录是以保留天数的方式进行删除,当一个项目版本迭代的不是那么频繁,有可能会把备份目录下的所有备份删除,
而在备份服务器上删除备份数据也是按只保留多少天的数据,所以备份服务器上此项目的备份数据也有可能会被删除,所以在第三版中把备
份目录中备份项目的删除方式进行了修改,可以以传入参数来指定保留多少个备份,这样更为安全。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #!/bin/bash
log_dir=/home/tomcat/tomcat-7.0.54/logs.bak bak_dir=/home/tomcat/bak project_name=iov_mcms log_record_file=/tmp/logs_clear.log export PATH=/usr/local/bin:/usr/bin:/bin
root_rate=`df -h | egrep --color=auto '/$' | sed -e 's/[=/%]/ /g' | awk '{print $6}'` [ -f ${log_record_file} ] || touch ${log_record_file} if [ ${root_rate} -ge $1 ];then [ -f /tmp/tmp.tmp ] && echo "" > /tmp/tmp.tmp || touch /tmp/tmp.tmp echo "数据开始清理时间:$(date +%F_%T)" >> ${log_record_file} find ${log_dir} -type f -mtime +$2 | tee /tmp/tmp.tmp >> ${log_record_file} if [ ! -s /tmp/tmp.tmp ];then echo "日志目录没有可删除的文件。" else for i in `cat /tmp/tmp.tmp`;do rm -f $i done fi let "bak_keep_num= $3 + 1" if [ `ls -td ${bak_dir}/${project_name}* | wc -l` -ge ${bak_keep_num} ];then ls -td ${bak_dir}/${project_name}* | tail -n +${bak_keep_num} | tee /tmp/tmp.tmp >> ${log_record_file} if [ ! -s /tmp/tmp.tmp ];then echo "备份目录没有可删除的文件。" else for i in `cat /tmp/tmp.tmp`;do rm -rf $i done fi else echo "备份目录没有可删除的文件。" fi find ${log_dir} -type d -empty | egrep -v "(debug$|trace$|info$|error$|warn$)" | tee /tmp/tmp.tmp >> ${log_record_file} if [ ! -s /tmp/tmp.tmp ];then echo "日志目录中没有空目录可清理。" else for i in `cat /tmp/tmp.tmp`;do rmdir $i done fi echo -e "数据清理完成时间:$(date +%F_%T)\n" >> ${log_record_file} fi
|