Linux
驗證數據的完整性
我剛剛設置了一個帶有 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
要嘗試了解損壞的性質。這就是為什麼我懇求在所有情況下都進行端到端完整性檢查。不幸的是,文件系統和作業系統供應商並沒有認真對待這一點。