ddコマンドのbsオプションはディスクの末尾にあります。

ddコマンドのbsオプションはディスクの末尾にあります。

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

ddWeb上の一般的な信念にもかかわらず、ディスクの書き込みをより良くする魔法はまったくありません。魔法は/devファイルにあります。あるいは、同じフラグを渡さない限り、バイナリデータ(最新、またはなどcatheadを処理できるすべてのツールは同じことを行います。ddseekskip

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

問題ありません。入力不足、制限がある、または他の問題(不良セクタ、不良ケーブルなど)が発生しない限り、ddlast()に書き込みます。No space left on devicecount=x

ブロック全体をカバーすることが目的であれば、shred使いやすくなります。

shred -v -n 1 /dev/deleteme     # pseudorandom data
shred -v -n 0 -z /dev/deleteme  # zeroes

またはcryptsetup検証フェーズを持つランダムデータの場合(0はランダムデータで暗号化され、ランダムデータは再びゼロに復号されます)。

またはblkdiscardSSDの場合。

またはwipefsドライブに保存されているすべてを強制的に削除するのではなく、最初から始める場合にのみ可能です。

関連情報