![如何 tar-gz 目录中超过 28 天的所有文件?](https://linux22.com/image/103239/%E5%A6%82%E4%BD%95%20tar-gz%20%E7%9B%AE%E5%BD%95%E4%B8%AD%E8%B6%85%E8%BF%87%2028%20%E5%A4%A9%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我每天都会删除文件夹中的日志文件。
find ~/folder -mtime +28 -type f -delete
现在我想归档并压缩受上述删除命令影响的所有文件,并将此 tar.gz 存储在新目录文件夹2中。
所以让我们假设:
~/folder:
- x1 (3 days old)
- x2 (3 days old)
- y1 (29 days old)
- y2 (29 days old)
~/folder2:
- genericname1.tar.gz: (some already present archive)
- ...
归档、压缩和删除
~/folder:
- x1
- x2
~/folder2:
- genericname1.tar.gz:
- ...
- genericname2.tar.gz:
- y1
- y2
答案1
您可以运行这样的脚本(假设是 GNUtar
或自由档案库bsdtar
):
find . -type f -mtime +28 -print0 | tar -czvf backup.tar.gz --null -T -
或者开始使用 logrotate (推荐)。您将自定义配置文件放置在/etc/logrotate.d/yourfile
示例文件中:
/var/log/news/news.crit {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP ‘cat /var/run/inn.pid‘
endscript
nocompress
}
您可以查看有关所有 logrotate 配置选项的更多信息这里