Linux

驗證數據的完整性

  • January 27, 2019

我剛剛設置了一個帶有 TB 驅動器的 FreeNAS 伺服器。我希望每台機器只有一個硬碟驅動器,所以我一直在獲取盡可能多的數據並通過 LAN 將其發送到 FreeNAS。我注意到至少有一個文件沒有正確複製並且現在已損壞。(我也注意到一些奇怪的權限問題,但這是另一個問題。)現在大部分數據都在 FreeNAS 伺服器上,是否有一種自動方法來驗證其他內容是否損壞?

我不確定如何描述文件是如何損壞的。基本上它看起來是一個 178 兆字節的影片文件,但是當訪問它以播放甚至移動時,訪問它的 Windows 機器給出了一個通用的無法訪問錯誤消息。我用FreeNAS的網頁拷貝界面移動文件,一移動,文件76兆,無法播放。

始終執行:

cd /filesystem; \
find . -type f -exec md5sum {} \; >& /filesystem-md5.log

然後

cd /filesystem-new; \
md5sum -c /filesystem-md5.log

在複製大量數據之前和之後。

您會驚訝於您在現實世界中經歷了多少隨機數據損壞。

當您發現損壞的文件時,cmp -l badfile goodfile要嘗試了解損壞的性質。

這就是為什麼我懇求在所有情況下都進行端到端完整性檢查。不幸的是,文件系統和作業系統供應商並沒有認真對待這一點。

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