dd
次のコマンドを使用する場合:
dd if=/dev/zero of=/dev/sdX bs=16M
ディスクの端が正確に16Mの倍数でなければどうなりますか?これは、ディスクの最後の残りの部分がゼロに設定されていないことを意味しますか?
私は気づいたhttps://www.marksanborn.net/howto/wiping-a-hard-drive-with-dd/、彼は米国政府が使用すると書いた。
dd if=/dev/urandom of=/dev/sda bs=8b conv=notrunc
このオプションは、conv=notrunc
最後のバイトが消去されたかどうかを確認する方法ですか?
答え1
dd
出力デバイスのサイズが渡したブロックサイズの倍数であるかどうかにかかわらず、出力デバイス全体が消去されます。
出力がデバイスファイルの場合、notrunc
デバイスファイルの切り捨ては効果がないため、このフラグは効果がありません。出力が通常のファイルの場合、出力ファイルは書き込み前に切り捨てられません。これは、一部のファイルシステムで(新しいデータブロックを書き込んで残りを保持するのではなく)、古いデータを上書きすることを意味しますが、これは機能しません。すべてのファイルシステムがこの属性を保証するわけではなく、コマンドはファイルを上書きするだけでなく、出力ディスクがいっぱいになるまで(または他のエラーが発生するまで)書き込みを続けるためです。
使用せず、dd
正しく使用することを心配しないでください。 (偶然にもこの特別な場合はうまくいきますが、複雑そして時には動作しません)、ただ使用cat
。
cat /dev/zero >/dev/sdX
dd
Web上の一般的な信念にもかかわらず、ディスクの書き込みをより良くする魔法はまったくありません。魔法は/dev
ファイルにあります。あるいは、同じフラグを渡さない限り、バイナリデータ(最新、またはなどcat
)head
を処理できるすべてのツールは同じことを行います。dd
seek
skip
dd
一般的な問題は、cat
操作が成功した後に「デバイスに残りのスペースがない」(ENOSPC)が誤って表示されることです。これをスクリプトに入れると、エラーがENOSPCであることを確認するか、別のアプローチを使用する必要があります。より信頼性の高いアプローチは、まずデバイスのサイズを決定してから(/proc/partitions
たとえば、Linuxで使用されているように)正確なバイト数を書き込むなどのツールを使用することですhead
。
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX
答え2
問題ありません。入力不足、制限がある、または他の問題(不良セクタ、不良ケーブルなど)が発生しない限り、dd
last()に書き込みます。No space left on device
count=x
ブロック全体をカバーすることが目的であれば、shred
使いやすくなります。
shred -v -n 1 /dev/deleteme # pseudorandom data
shred -v -n 0 -z /dev/deleteme # zeroes
またはcryptsetup
検証フェーズを持つランダムデータの場合(0はランダムデータで暗号化され、ランダムデータは再びゼロに復号されます)。
またはblkdiscard
SSDの場合。
またはwipefs
ドライブに保存されているすべてを強制的に削除するのではなく、最初から始める場合にのみ可能です。