我有一个文件夹/home/testuser/log
,其中包含一天前的日志文件*.log
。我希望将所有超过一天的日志文件压缩为单个 zip(gzip 或 tar.gz)并删除较旧的文件。
我尝试管道查找和 tar 命令但没有成功
答案1
创建早于一天日志的 tar.gz 文件
find /home/testuser/log/ -mtime +1 | xargs tar -czvPf /opt/older_log_$(date +%F).tar.gz
删除较旧的文件 [注意:- 如果下面的 find 输出正确,则删除 echo ,之后它将删除这些文件]
find /home/testuser/ -mtime +1 | xargs -n1 echo rm
答案2
扩展 sr_ 的评论,我正在使用 logrotate 来管理夜间 SQL 转储。我有这个配置/etc/logrotate.d/mydbdump
:
/var/backups/dump.sql {
daily
rotate 7
missingok
create 640 root root
compress
}
它基本上获取/var/backups/dump.sql
文件(您可以指定日志文件的名称),压缩它并将其重命名为dump.sql.1.gz
.在此之前,它会轮换旧的,dump.sql.1.gz
依此dump.sql.2.gz
类推,并删除最旧的。
logrotate
它本身通常由 调用cron
,因此请查看您的/etc/cron*
目录以控制它的运行时间。