如何檢查同一文件的兩個版本之間的文件完整性?

如何檢查同一文件的兩個版本之間的文件完整性?

在過去的幾年中(自 2000 年左右),我時不時地在磁碟之間移動和複製資料。資料包括MP3、應用程式、視訊、備份、電子郵件等等,它們已在多個磁碟(和磁碟陣列!)以及多個檔案系統FAT、NTFS、ReiserFS、Ext3、Ext4、jfs 之間移動/複製. ..

最近我注意到一些 RAR 檔案、一些可執行檔(實際上是壓縮檔案)以及可能其他我還沒注意到的檔案已損壞。我不知道壓縮檔案中是否存在某種模式。我認為它不僅限於那裡。

首先,我使用 find 和以下命令檢查了 Linux 檔案伺服器中 rar 檔案的完整性:

unrar t <rar files>

這很好,但是,我無法像這樣檢查我所有檔案的完整性,更不用說我所有其他文件(文件、照片、MP3、WAV、ZIP,清單當然是無窮無盡的)

我想透過多種方式檢查所有文件。

  1. 檔案系統檢查顯然很好,但如果資料在複製到目前所在的磁碟之前就已經損壞了,那麼它並沒有真正的幫助,對吧?目前的檔案系統是 JFS。

  2. 第二級檢查可以是 MD5 校驗和嗎?我有所有資料的備份,我可以嘗試匹配校驗和,但損壞的檔案會給我不同的校驗和嗎?如果檔案在我的資料的最後一個副本之前已損壞,這仍然無法解決問題。

  3. 我還可以檢查哪些內容才能安心?

  4. 將我的資料與備份進行比較時有一個巨大的問題;就像所有活著的東西一樣,我的數據隨著時間的推移而“改變”,而備份是及時的快照,之後就再也沒有改變過。其一,目錄結構發生了變化,檔案顯然已被刪除或轉移到其他位置。顯然,使用該命令find來匹配備份樹和當前樹之間的檔案會很混亂!

那麼是否有人處理過類似的事情並且可能擁有可以快速查找和使用文件索引條目的腳本(使用locate或其他方式)?

答案1

MD5/SHA校驗和是當今檢查文件完整性的黃金標準。如果您有用於建立校驗和的原件,或者已經有校驗和,那麼這就是最徹底的驗證文件內容的方法。然而,如果您有與您建議的一樣多的文件,這可能會很乏味。

此外,RARZIP7Z檔案格式應包含儲存在其中的任何檔案的 CRC32 校驗和。這比 MD5 或 SHA 更弱(即,損壞的資料更有可能未被偵測到),但它仍然可以在提取檔案時檢測是否有損壞,這表示檔案已損壞。每當您從存檔中提取文件時,都會自動驗證這些內容。unrar -t <rar files>基本上只是測試檔案中每個檔案的 CRC32 校驗和。

此外,歸檔工具應該為您提供在建置歸檔時產生檔案的選項.sfv,這是整個歸檔的附加 CRC32。您可以使用它來進一步驗證存檔的完整性。

如果要將檔案從一個檔案系統複製到另一個檔案系統,則可以使用專用工具來驗證複製是否成功且正確。對於我使用的 Windows TeraCopy- 只需在開始複製之前啟用“驗證”選項,TeraCopy 將重新讀取複製的文件,以檢查它們是否確實在新位置正確寫入磁碟。

相關內容