是否有適用於 Linux 的通用文件系統校驗和工具?
編輯:澄清上下文
我在不同的機器上有幾個鬆散同步的文件系統。(有些內容是多餘的,有些不是,東西是由使用者手動移動的)。這些是大型科學數據集(數十 TB);它們根據我們對它們執行的工作類型跨集群移動。它們沒有標準的命名約定(文件有時會隨著各種實驗的進行,或者在選擇或合併文件子集時被重命名)。
我想找到一個工具,讓我能夠有效地跨遠端文件系統找到冗餘,以便我們可以刪除冗餘數據,並在停用儲存磚時複製非冗餘數據。(旁注:像 Ceph 這樣的分佈式文件系統承諾處理這些情況;這將是未來的路線,但現在我們必須按原樣處理現有系統)
由於許多對像已被手動移動和重命名,因此我不能依靠它們的文件名來與 diff 或 rsync 進行比較。我寧願使用 sha256 之類的加密校驗和來辨識我的數據文件。
我也不想每次執行比較時都對整個數據集進行校驗和。這些文件一旦創建,就不太可能經常更改,因此應該記憶體校驗和。
是否有現有的工具可以做到這一點?也許將校驗和儲存在 Posix 擴展屬性中(使用時間戳來檢查校驗和新鮮度),以及可以提取該資訊以有效區分文件系統內容的工具,而不關心文件名?
由於我沒有找到可以滿足我需求的工具,因此我開始使用自己的工具:
http://bitbucket.org/maugier/shatag
- 編輯 -
在開發該工具後,我了解到git-annex與我的目標不同,但它仍然是一個理想的解決方案。
我不知道文件系統級校驗和;您可以使用 md5sum 編寫腳本(或手工製作)並將其儲存在文本文件中以進行比較,並且 md5sum 有多個平台的埠。
如果這些是大文件,您可以考慮設置一個允許使用者使用 bittorrent 複製數據的系統;它有一種內置的校驗和數據方式,如果您有多個儲存文件的地方,您可以從不載入一兩個系統的傳輸中獲得額外的好處。
如果您正在管理系統或數據,您可能需要考慮更改有關如何復製或移動數據的策略;如果出現問題,這可能會導致您少掉頭髮,並且如果發生某些事情並且“這一次”數據沒有被樓下的 Bob 備份,您的使用者可能會感謝您。如果您在現有基礎架構中工作,則無需做任何過於復雜的事情;即使是在網路上執行定期 rsync 的幾台伺服器(這也將相對較快,因為它在通過網路傳輸時只傳輸大文件中的更改,如果它認為它是本地文件,則不會如此)將創建同步文件。
我要提醒的是,複製這樣的文件並使用校驗和在技術上並不是備份。這是重複的。備份意味著當您的主文件損壞時,您可以“回滾”到以前的版本(想要設置類似於 CVS 的東西來檢查您的大數據文件?…)同時複製,即使使用校驗和,這意味著如果您的原始已損壞(意外刪除,驅動器中的壞扇區等),損壞將被複製出來,校驗和和所有,到您的副本,使它們無用。您需要為這種情況進行計劃。