Logrotate

logrotate 如何與硬連結文件互動?

  • July 13, 2013

我有一項服務堅持將其日誌文件保存在可怕的位置。在所有改變保存位置的努力都失敗之後,我的下一個想法是在更乾淨的地方創建指向這些文件的硬連結。這讓我產生了一個擔憂:

如果我配置 logrotate 來管理這些日誌文件,它會按預期工作(旋轉日誌,保持我的連結正常工作)嗎?還是 logrotate 會意外斷開連結,並將日誌累積在其本地位置,而不是在我的中心位置?

我相信我可以配置 logrotate 以在必要時在輪換後重新創建硬連結。但是,有必要嗎?

要回答您的問題,這取決於您進行哪種輪換。例如,將發生以下進展:

複製和截斷方法:

  1. Logrotate 將日誌文件複製到新的日誌文件中。
  • 新的日誌文件只顯示在舊位置。
  1. Logrotate 截斷舊文件。
  • 這會將舊文件在兩個位置都變為零字節。
  1. 日誌文件繼續從應用程序中填充。

這會將日誌文件備份留在舊位置。

對此的修復相當簡單:配置 logrotate 以在位置輪換日誌。舊的文件仍然會不斷增長,但它只是那個文件。

複製和創建方法:

  1. Logrotate 將文件複製到新的日誌文件。
  • 此日誌文件沒有硬連結,僅顯示在新位置。
  1. Logrotate 刪除舊的日誌文件。
  • 由於硬連結,這只是刪除了 logrotate 執行目錄中的硬連結。另一個目錄仍然有該文件的完整副本。
  1. Logrotate 創建一個新的日誌文件。
  • 這不會硬連結到其他位置。

這種方法是最有問題的,你需要一些旋轉後魔法來清理它。

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