我在用壞塊對磁碟上的任何資料進行破壞性擦除;使用以下命令:
badblocks -wsp 0 /dev/sdb1
我通過了該選項-p 0
,希望這只會導致一次通過,但我得到了多次通過:
Testing with pattern 0xaa: done
Reading and comparing: done
Testing with pattern 0x55: done
Reading and comparing: done
Testing with pattern 0xff: done
Reading and comparing: 19.01% done, 7:43:47 elapsed. (0/0/0 errors)
透過閱讀線上幫助頁,我可以看到該-w
選項本身包括四遍:
-w 使用寫入模式測試。使用此選項,badblocks 透過在裝置的每個區塊上寫入一些模式(0xaa、0x55、0xff、0x00)、讀取每個區塊並比較內容來掃描壞區塊。此選項不能與 -n 選項組合使用,因為它們是互斥的。
這對於我的需求來說是太多的。有什麼辦法可以實現單次破壞性傳遞嗎?
答案1
進一步閱讀手冊頁後,我解決了這個問題。-w
正如選項描述所暗示的那樣,確實執行了一次傳遞-p
:
預設值為 0,表示壞區塊將在第一次通過後退出。
一次通過由四種測試模式組成:
-w 使用寫入模式測試。使用此選項,badblocks 透過在裝置的每個區塊上寫入一些模式(0xaa、0x55、0xff、0x00)、讀取每個區塊並比較內容來掃描壞區塊。
可以使用以下選項覆寫該模式-t
:
-t test_pattern 指定要讀取(和寫入)到磁碟區塊的測試模式。 test_pattern 可以是 0 到 ULONG_MAX-1 之間的數值,也可以是單字“random”,它指定區塊應該用隨機位元模式填入。對於讀取/寫入 (-w) 和非破壞性 (-n) 模式,可以透過為每個所需的測試模式指定 -t 選項來指定一個或多個測試模式。對於唯讀模式,只能指定單一模式,而且它可能不是「隨機」的。使用模式進行唯讀測試假定指定的模式先前已寫入磁碟 - 如果沒有,則大量區塊將無法通過驗證。如果指定了多個模式,則在繼續下一個模式之前將使用一個模式測試所有區塊。
命令和輸出範例:
# badblocks -wsvt 0 /dev/sdz
Checking for bad blocks in read-write mode
From block 0 to 488386583
Testing with pattern 0x00: done
Reading and comparing: done
Pass completed, 0 bad blocks found. (0/0/0 errors)
答案2
如果目標是銷毀資料而不是尋找錯誤,那麼您可以使用
dd if=/dev/zero of=/dev/sdX status=progress
其中 X 是目標裝置的字母。
但是,如果您確實擔心磁碟上的數據,則可以多次執行 dd,使用其他工具(例如擦除或粉碎)或只是讓壞塊完成其工作。這完全取決於您願意投入多長時間來刪除資料。