Linux

給定一個原始文件系統和備份文件系統,我如何找出是否失去了任何文件?

  • September 15, 2013

我從Stackoverflow 上的這篇文章中發現,如果您只想獲取內容不同的相應文件的列表,那麼您可以執行:

diff  --brief --recursive dir1/ dir2/

…並親自嘗試,這給出了一個很好的內容不同的文件的小列表。

但是,如果我已經對原始文件系統進行了備份(假設是 BIG 文件系統,例如 2TB),並且我想檢查備份是否與原始文件系統相同(例如,我想檢查備份是否成功),什麼如果我只對任何一方都不可用的文件感興趣,我應該執行嗎?我想要快速檢查目錄樹的東西(不檢查內容)。

儘管比較文件大小並不能絕對指示備份文件是否不同,但在比較命令期間比較該文件和其他非文件內容元數據會有所幫助。

(我很抱歉重新發布了一個非常相似的問題,但我注意到一個使用者認為這個問題可能是題外話,所以這個問題肯定會出現在 stackoverflow 上。)

有這方面的經驗嗎?

檢查修改時間和文件大小的非 rsync 解決方案:

diff <(find dir1 -mindepth 1 -printf '%P %t %s\n' | sort) <(find dir2 -mindepth 1 -printf '%P %t %s\n' | sort) | grep -E '^[<>]'

範例輸出:

> bar Sat Sep 14 11:52:33.0544384394 2013 91
< foo Fri Sep 13 17:58:21.0213671425 2013 445
> foo Sun Sep  8 23:01:02.0355432619 2013 347

顯示foo已修改dir1bar僅存在於dir2.

您沒有告訴我們您使用什麼備份解決方案,但幾乎所有真正的備份程序都有“驗證”模式。(在這種情況下,“真正的”備份工具類似於 Bacula,專為備份和恢復而設計的軟體)。

在所有其他條件相同的情況下,我建議使用真正的備份軟體及其內置的驗證工具。


rsync -nav --delete <backup> <original>我的建議是所有其他不相等的事情。

確實會檢查內容,並會告訴您有關額外文件、不同文件和失去文件的資訊。它不像 a 那樣深入(慢)diff,這-n意味著它實際上不會觸及文件系統。

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