問候 !
這是關於我們試圖實現的 rsync 的特定要求。我們嘗試透過使用各種 rsync 選項來實現這一目標。然而,我們在使用不同的 rsync 選項時遇到了不同的問題。
背景: • 我們有一個行程(在 AIX 上執行),日誌記錄在 A.log 中(存在於日誌目錄中)。 • 一旦A.log 達到100 MB 並建立新的A.log,它就會輪替為A.CURRENT_DATE_TIME.log。 • 我們正在使用rsync 將這些日誌傳輸到中央伺服器。我們在完整的日誌目錄上使用 rsync。 • 來源伺服器和目標伺服器上的檔案的INODE 不同。 • 一旦日誌位於集中式伺服器中,我們的想法是透過集中式日誌進程讀取/索引這些日誌,該進程將從該集中式伺服器中選取輸入。
問題: • 儘管A.log(目標伺服器)是作為集中式日誌進程的輸入給出,但它考慮的是檔案的INODE,而不是實際的檔案名稱。 • 因此,當A.log 檔案捲動時,新的A.log 具有集中式程序未偵測到的新INODE。當我們將 -u –r –t 選項與 rsync 一起使用時,就會發生這種情況。因此,在這種情況下,每次 rsync 發生以及翻轉發生時,檔案的 INODE 都會發生變化。因此,該進程會停止索引,因為它會尋找不存在的舊 INODE。
• 這個想法是將rsync 與選項組合一起使用,這些選項在rsync 時不會更改檔案的INODE,但應在A.log 輪換到A.CURRENT_DATE_TIME.log 時更改翻轉時的INODE。因此,為了實現這一目標,我們包含了 –inplace 選項,並且我們能夠在 rsync 時保留 INODE,並在檔案輪換時保留 INODE 變更。然而,它現在給我們帶來了一個不同的問題,檔案名稱不會改變並且始終保持 A.log。因此,一旦進程完成對 A.log 的索引,它就會停止。
如果有人能提出一些可以幫助我們實現上述要求的建議,那就太好了。
此致, Puneet Sinha 中介軟體管理員
答案1
我不建議依賴 inode。每當檔案從來源電腦移動到目標電腦時,它都會發生變化。如果從備份中還原文件,它也會發生變化。如果日誌處理系統依賴索引節點,那麼如果您從備份中恢復,系統將無法按您的預期工作。
我的建議是不要複製 A.log,而只複製 A.CURRENT_DATE_TIME.log。這將簡化項目。
我懷疑目標伺服器上的日誌處理系統正在查看 inode 以確定先前視為 A.log 的檔案現在是否為 A.CURRENT_DATE_TIME.log。那是不可靠的。
上述方案有一個問題:日誌檔案中的一行從生成到被集中式日誌進程處理所花費的時間會增加。例如,如果 A.log 需要 3 天才能成長到 100 MB,則該檔案中的任何內容在最多 3 天內都不會進入集中式日誌流程。如果日誌不能延遲超過 2 小時,那麼我會每 1 小時輪換一次日誌。這樣您就知道您已在 2 小時的目標內。