
我正在嘗試編寫一個腳本來使用 USB 隨身碟執行一些操作,刪除它遇到的任何分割區並建立新的分割區(更多資訊請參閱這個連結)。
當我使用 GParted 進行操作時,一切正常,特別是當使用其檔案系統建立新分割區時,任何舊資料都會消失(對於我正在處理的內容,此操作不會花費太多時間)。
但是,當我使用 執行相同的操作時fdisk
,我總是在與之前相同的舊分區中找到舊資料!
我怎麼能完全刪除舊分割區的資料(並且與 GParted 一樣快)?
我嘗試了命令dd if=/dev/zero of=/dev/sdb bs=512 count=1
和shred -vzn 0 /dev/sdb
/或類似命令,但要么它們實際上不會刪除文件,要么與 GParted 相比,它們會花費太多時間來執行此操作。
答案1
中沒有這樣的事情fdisk
。與 GParted 不同,它根本不關心檔案系統和分區內容——您需要手動完成。
另外,你沒有解釋你如何確定「舊資料消失了」——你檢查了實際的分區設備,還是只是掛載並ls它?一個分割區可能充滿了垃圾,但這並不重要,只要檔案系統顯示「根目錄中有 0 個檔案」即可。
我懷疑 GParted 是否有完全清空分區的功能 - 更有可能的是它只是創建了一個新的檔案系統在上面之前存在的任何東西。 (也就是說,在 SSD 上,mkfs
工具做使用 TRIM 丟棄整個分區,這幾乎是即時的。然而,對於 HDD,沒有什麼可以使磁碟旋轉得更快 – dd 不會比 GParted 慢很多。
所以以下內容應該就夠了:
- 用於
wipefs --all /dev/xxx
擦除可識別的檔案系統結構, - 使用
mkfs.ext4 /dev/xxx
(或 mkfs.whatever-else)建立一個空白檔案系統。