由于项目的特殊需求,需要保留项目每天的日志,而日志文件又很大,时间久了会影响磁盘的使用量,因此必须定期的压缩备份以前的日志文件,这里我是通过shell脚本压缩打包文件然后加入到linux的定时任务中来处理的,虽说shell脚本很简单就是那么几行,但是当中遇到的问题还是做一下说明:
#!/bin/sh #gztest项目的日志压缩程序 cd /var/www/gztest/Temp/log && rm -rf ./*.txt #打包压缩日志文件 logdir=$(date +%Y-%m-%d).log.tar tar -jcf ${logdir} ./*.log && rm -rf ./${logdir}
执行如下命令:sh -x /root/logzip.sh 对该脚本执行过程进行如下测试:
在tar打包的时候提示"在我们读入文件时文件发生了变化",我想大家应该可以想到是什么原因了,因为有程序一直在往这个日志文件中写入内容,所以这里抛出了异常导致后面的命令没有执行。
#!/bin/sh #gztest项目的日志压缩程序 cd /var/www/gztest/Temp/log && rm -rf ./*.txt #打包压缩日志文件 logdir=$(date +%Y-%m-%d) mkdir ${logdir} find ./ -name '*.log' -mtime +0 -type f -exec cp -r {} ./${logdir} \; tar -jcf ${logdir}.log.tar ./${logdir}/* rm -rf ./${logdir} find ./ -name '*.log' -mtime +0 -type f -exec rm -rf {} \;
测试之后可以成功运行。