為什麼rsync只硬連結一些未更改的檔案?

為什麼rsync只硬連結一些未更改的檔案?

我用於rsync增量備份,使用--link-dest選項指向先前的備份,以便未更改的檔案硬連結到那裡。

這是有效的,但不適用於所有文件。例如,我的備份中有一個目錄,其中包含三年多沒有修改過的檔案。但由於某種奇怪的原因,只有其中一些是硬連結。

不方便的是,較大的文件都是副本(即只有一個文件鏈接,可通過 進行檢查ls -l)。但對於一些較小的文件也是如此,並且實際上一些硬連結文件比一些複製的文件更大。

似乎沒有任何模式可以讓我預測哪些將是副本以及哪些是硬連結。檔案名稱長度和檔案大小似乎無關緊要,修改日期也是如此:複製清單和硬連結清單中混合了所有這些內容。也就是說,這些文件確實似乎為了在多個備份之間保持一致,因此一個備份發生的情況似乎也發生在下一個備份中。

文件是否有某些屬性(技術或其他)、某些功能會導致rsync複製它而不是硬連結它?

編輯1:提到「屬性」讓我想知道是否有一些ls -l未列出的屬性可能會產生影響,但lsattr在來源目錄中執行操作表明所有檔案都具有相同的屬性。

編輯2:我之前說過(現已刪除)權限都是相同的,但這是錯誤的。目標(備份)目錄中的權限相同。我正在使用--perms(保留權限),所以我不知道為什麼權限沒有保留。我之前也以非 root 用戶身份運行,但現在我嘗試以 root 身份運行,以防產生影響,但權限仍然沒有被保留,這可能是為什麼某些文件看起來已經更改 - 文件沒有不是,但其權限顯然具有(至少與先前的備份及其不正確的權限相比)。

編輯3:我現在認為這與我的 CIFS 伺服器有關。手冊頁中有mount.cifs關於該file_mode選項的內容:“如果伺服器不支援 CIFS Unix 擴展,則會覆蓋預設檔案模式。”當我運行mount不帶參數的命令來列出安裝時,列出的選項包括file_mode=0755和 ,dir_mode=0755其中與我所看到的內容相關。我無法chmod掛載文件,因此那些最初沒有0755權限的文件被視為已更改,因此會再次複製 - 並且由於掛載而再次在備份中獲得錯誤的權限。

答案1

更多的是一種解決方法而不是解決方案,我現在避免使用--perms/-p或任何暗示它的東西。顯然,我的權限不會被複製,但至少它不會認為未更改的文件僅僅因為其權限不同而被更改。

相關內容