阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

采用SHELL脚本对日志压缩备份处理

265次阅读
没有评论

共计 814 个字符,预计需要花费 3 分钟才能阅读完成。

由于项目的特殊需求,需要保留项目每天的日志,而日志文件又很大,时间久了会影响磁盘的使用量,因此必须定期的压缩备份以前的日志文件,这里我是通过 shell 脚本压缩打包文件然后加入到 linux 的定时任务中来处理的,虽说 shell 脚本很简单就是那么几行,但是当中遇到的问题还是做一下说明:

最初的做法我是直接用 tar 命令打包日志目录下面的日志文件,打包成功后删除日志文件,我的 shell 脚本如下:

采用 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 打包的时候提示 ” 在我们读入文件时文件发生了变化 ”,我想大家应该可以想到是什么原因了,因为有程序一直在往这个日志文件中写入内容,所以这里抛出了异常导致后面的命令没有执行。
后来我换了一个方法,先将日志文件拷贝到一个临时目录,然后将临时目录打包、最后删除临时目录、和已经打包过的文件,shell 脚本如下:

#!/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 {} \;

测试之后可以成功运行。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计814字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中