0

我的帖子

个人中心

设置

  发新话题
由于项目每天产生日志,需要定期按文件名压缩后,清理已执行过打包的源文件,本人初学,查了些资料后写了以下脚本:

#!/bin/bash

echo 当前时间为$(date)
. ~/.bash_profile
for i in `find /data/logs/*/2019*/ -mtime +1 -type f -name "*.log"`;
do
tar -Pzcvf $i.tar.gz $i
done
if [ $? -eq 0 ]; then
   rm -rf $i
   echo "success"
else
    echo "fail"
fi



以上脚本执行后,可以实现把日志按文件名单独打包,但删除旧文件时,只能删除最后一个log文件,请问问题出在哪,应该怎样修改?



引用:
原帖由 wghgj 于 2020-01-01 11:51 发表
shell打包备份日志并删除已备份的日志遇到问题
删除也要放在for循环里,直接在压缩命令加&&删除命令,if都省了




windows?

linux自带logrotate可以用来处理这种业务需求的

## Rotate nginx logs
/data/software/nginx/logs/*.log
/data/software/nginx/logs/*.access
/data/software/nginx/logs/*.error
/data/software/nginx/logs/*.err
{
weekly
rotate 4
missingok
dateext
compress
notifempty
copytruncate
}
这是每周的,存档压缩保留4周
每日是daily




本帖最后由 chengchow 于 2020-1-7 14:24 编辑
‹‹ 上一贴:linux   |   下一贴:linux挂载点的问题 ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2020 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com