移至主內容
DarkRanger's Secret Area

主導覽

  • 首頁
  • 關於本站
  • Linux
  • 程式開發
  • N900
  • 譯文
  • 資訊技術辭典

文章分類

  • 影劇
  • 遊戲
  • 筆記
  • 雜文
  • 資訊技術
  • 站務訊息

最新內容

  • How-To:Linux 安裝 DevilutionX
  • 於 2012 年建立的一份音樂播放清單
  • How-To:Linux 安裝 Medal of Honor: Allied Assault
  • Fallout 4 (2015)
  • How-To:Linux 安裝 Blood
  • 《終極動員令》系列早期作品原始碼釋出
  • How-To:Linux 安裝 Doom 3
  • Nausicaä of the Valley of the Wind (1984)
  • Intel 內顯與 Linux 桌面死當問題排解
  • 《哥吉拉 -1.0》心得補遺

導航連結

  • 首頁
  • Linux 專區
  • Linux 工具程式
  • How-To:Linux 硬碟資料抹除

How-To:Linux 硬碟資料抹除

發表日期:星期六, 01/11/2014 - 22:22,更新日期:星期二, 05/06/2025 - 19:21

在淘汰舊硬碟時,如果在未採用物理性破壞的情況下,為避免資料外洩往往得先進行資料抹除的動作,而這類操作其實在 Linux 上很容易就能夠做到。本文將說明兩款 Linux 上的相關工具,分別為 hdparm 以及 shred。這兩款工具事實上算是非常普遍的工具程式,在許多 Linux 發行版裡都可以找得到。使用者也可以藉由諸如 SystemRescue 這類的免安裝版本,利用光碟或隨身碟啟動後,直接在任何電腦上進行操作。

 

1. hdparm

hdparm 是一款硬碟參數修改工具,它可以用來執行 IDE/SATA 介面硬碟所內建的 Secure Erase(安全抹除)指令。其操作流程如下:

 

首先需確認該硬碟是否支援 Secure Erase:

  • sudo hdparm -I /dev/sda

 

輸出訊息應出現如下的「Security」項目,其中必須顯示「not frozen」(未凍結),才表示 Secure Erase 是可執行的,如果是「frozen」則無法執行 Secure Erase。解除凍結狀態的可行方法不一,一般最直接的作法是將系統暫停(例如執行 systemctl suspend)再喚醒。

Security: 
	Master password revision code = 65534
		supported
	not	enabled
	not	locked
	not	frozen
	not	expired: security count
		supported: enhanced erase

 

確認支援 Secure Erase 後,對硬碟設置 Security 功能的密碼,例如「1234」:

  • sudo hdparm --user-master u --security-set-pass 1234 /dev/sda

 

然後使用相同的密碼執行 Secure Erase:

  • sudo hdparm --user-master u --security-erase 1234 /dev/sda

 

這個指令會跑一段時間,結束時若無任何錯誤訊息即表示資料抹除完成。

 

2. shred

shred 是 GNU 核心工具組(GNU Coreutils)的一部分,它能夠重複用亂數值或零值將硬碟填滿,以達到資料抹除的目的。雖然同樣的作法其實可以用 dd 去完成,然而 shred 的效率更好,而且還能夠顯示處理進度。

 

shred 的操作指令相當簡單,基本的填滿硬碟指令如下:

  • sudo shred -vz /dev/sda

 

參數「v」是顯示進度,「z」則是增加一道程序填入零值。由於 shred 預設為填入亂數值三次,因此上述指令代表三次亂數值和一次零值,總共填滿硬碟四次。

 

3. 兩款工具、方式的選擇

使用 hdparm 執行 Secure Erase 指令應該是最優先的選擇,不過出產年份過於久遠的 IDE 硬碟可能未包含 Secure Erase 功能。此外若是使用 USB 轉接線連接硬碟,則可能會造成 hdparm 的執行錯誤。

 

shred 可作為不錯的備案,不過一個具體的缺陷是它會略過無法寫入的磁區,在處理部份故障的硬碟時就會不夠完整。處理效率方面,兩種方式都會受到裝置本身的速度以及容量的影響,但基本上執行 Secure Erase 指令都會比用 shred 重複填滿來得快。

 

4. 其它參考資料:

  • https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase
  • https://linux.die.net/man/8/hdparm
  • https://linux.die.net/man/1/shred