Rsync

每日 rsync 備份,包含硬連結、校驗和和新電腦

  • September 17, 2012

我每天使用帶有硬連結的 rsync 將我的筆記型電腦備份到 Fedora 桌面。這已經工作了將近一年。

我最近購買了一台新電腦,轉移了我的數據,並希望每天繼續備份這台電腦。

但是,由於從舊筆記型電腦到新筆記型電腦的數據傳輸,時間戳明顯改變,因此會導致我每天的 rsync 備份重新傳輸所有數據。

我認為通過將 -c (校驗和)開關添加到我的 rsync 備份中,它將基於校驗和而不是時間戳和大小來匹配文件,並且只傳輸那些不同或不存在的文件。這似乎可行,但是在檢查新備份時,沒有創建硬連結,並且似乎應該硬連結的文件只是從備份伺服器上的先前備份目錄複製到新的備份目錄。這對我來說是非常特殊的行為,我無法弄清楚為什麼會發生這種情況。校驗和匹配我認為應該硬連結的文件。

我已經瀏覽了 rsync 手冊頁和Google搜尋了一下,並沒有找到任何東西讓我更好地理解這種行為。

我認為您誤解了校驗和和硬連結選項。

--checksum選項在手冊頁中描述為“基於校驗和跳過,而不是 mod-time & size”。這意味著 mod time 和 size 基本上被忽略了,但這確實意味著所有文件都在兩側讀取(因為它必須讀取文件來計算校驗和。

重要的是要意識到,如果時間和大小不同,rsync 無論如何都會這樣做。因此--checksum,與沒有它相比,它會導致更多的工作(讀取每個文件)。沒有它,校驗和只有在 mod 時間或大小不同時才會完成。如上所述,這只影響要跳過的文件。

--checksum通常用於備份腳本中,相當於“完整備份”,例如每月一次。這可確保任何可能已更改但以使 mod 時間和大小保持不變的方式正確備份的文件。

選項(來自手冊頁):“這--hard-links告訴 rsync 在傳輸中查找硬連結文件”。請注意,它僅在傳輸中,因此它不會檢測到您在 rsync 伺服器上的另一個位置有數據的現有副本,並對其進行硬連結。它僅將正在傳輸的文件與之前已傳輸的其他文件連結。

因此,如果您希望新筆記型電腦的備份目錄硬連結到舊筆記型電腦的備份目錄,則需要刪除新筆記型電腦的備份目錄,並使用硬連結(例如,通過cp -al)重新創建它。但是,如果您的所有文件日期都已更改,您可能會遇到 rsync 重新傳輸這些文件並破壞這些硬連結的問題。您首先可能需要將一台筆記型電腦與另一台筆記型電腦同步,注意不要對它們之間真正需要不同的數據進行同步。這樣文件應該具有相同的日期,這將使您的 rsync 備份更快樂。

我知道你說過你閱讀了手冊頁,但我鼓勵你再看一遍,特別是--checksum--hard-links選項的詳細描述。您可能還應該閱讀有關該--in-place選項的資訊,因為如果您試圖保留硬連結,它可能會產生不良影響。

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