Linux

Logrotate:輪換非日誌文件?

  • March 8, 2018

我有一個備份腳本,可以壓縮各種文件和目錄並創建 .tgz 檔案。文件被命名,例如

...
backup_2010-10-28.tar.gz
backup_2010-10-29.tar.gz
backup_2010-10-30.tar.gz
backup_2010-10-31.tar.gz
backup_2010-11-01.tar.gz

我想管理這些文件,因此只保留最後 5 個備份,刪除舊文件。

我可以使用 logrotate 來做到這一點嗎?它們不是日誌文件並且已經被壓縮。它們在 /root 而不是 /var/log - 我還能使用它嗎?

謝謝

Logrotate 旋轉文件,所以答案是肯定的 - 可能,如果沒有足夠的權限,則將它們放在 /backup 或其他地方。檢查輪換日誌具有哪些組和使用者:-)。

logrotate 中有壓縮選項,例如如果未配置“壓縮” - 那麼它不會嘗試。同樣在您的情況下,“旋轉 5”選項。

查看 /etc/logrotate.d (或儲存在系統中的任何位置)

如果不更改您的流程,logrotate 本身不會執行您在此處查找的操作。這裡的關鍵問題是,雖然 logrotate 可以採用萬用字元,但如果您這樣做,它不會將文件視為一個文件,而是會嘗試單獨旋轉所有文件,這絕對不是您想要的。

但是,只要最近的備份是在沒有日期戳的情況下創建的,您就可以按照您描述的方式使其工作。例如,如果您創建備份過程/root/backup.tar.gz,則可以使用以下 logrotate 配置:

/root/backup.tar.gz {
   rotate 5
   nocompress
   dateext
   dateformat _%Y-%m-%d
   extension .tar.gz
   missingok
}

此處選項的快速概述:

  • rotate 5– 刪除前保持5個旋轉
  • nocompress– 旋轉後不壓縮文件
  • dateext– 使用日期作為輪換擴展而不是遞增數字
  • dateformat _%Y-%m-%d– 設置您要使用的日期擴展格式
  • extension .tar.gz.tar.gz在旋轉擴展之後進行
  • missingok– 如果我們要旋轉的文件不存在,不要擔心,繼續前進(預設是拋出錯誤)

希望這可以幫助!

引用自:https://serverfault.com/questions/196843