Logrotate

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

  • March 5, 2018

每天我都在刪除文件夾中的日誌文件。

find ~/folder -mtime +28 -type f -delete

現在我想歸檔和壓縮所有受上述刪除命令影響的文件,並將這個 tar.gz 儲存在一個新的目錄文件夾中。

所以讓我們假設:

~/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

您可以執行這樣的腳本(假設 GNUtarlibarchivebsdtar):

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 配置選項的更多資訊

引用自:https://unix.stackexchange.com/questions/337791