如何 tar-gz 目录中超过 28 天的所有文件?

如何 tar-gz 目录中超过 28 天的所有文件?

我每天都会删除文件夹中的日志文件。

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 配置选项的更多信息这里

相关内容