Linux
給定一個原始文件系統和備份文件系統,我如何找出是否失去了任何文件?
我從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
已修改dir1
且bar
僅存在於dir2
.
您沒有告訴我們您使用什麼備份解決方案,但幾乎所有真正的備份程序都有“驗證”模式。(在這種情況下,“真正的”備份工具類似於 Bacula,專為備份和恢復而設計的軟體)。
在所有其他條件相同的情況下,我建議使用真正的備份軟體及其內置的驗證工具。
rsync -nav --delete <backup> <original>
我的建議是所有其他不相等的事情。這確實會檢查內容,並會告訴您有關額外文件、不同文件和失去文件的資訊。它不像 a 那樣深入(慢)
diff
,這-n
意味著它實際上不會觸及文件系統。