出力デバイス全体のサイズは、渡したブロックサイズの倍数であるかどうかに関係dd
なく消去されます。
notrunc
フラグは、デバイスファイルを切り捨てることは影響を及ぼさないので、出力は、デバイスファイルでは効果がありません。出力が通常のファイルである場合、出力ファイルが書き込まれる前に切り捨てられないという影響があります。これは、一部のファイルシステムでは、古いデータが上書きされることを意味します(新しいデータブロックを書き込んで残りを未接続のままにするのではなく)。ただし、このプロパティはすべてのファイルシステムで保証されているわけではなく、さらにコマンドはファイルを上書きするだけでなく、出力ディスクがいっぱいになるまで(またはその他のエラーが発生するまで)書き込みを続けるため、これは役に立ちません。
dd
それを正しく使用しているかどうかを使用して心配する代わりに(実際には、この特定のケースでは機能しますが、複雑で機能しない場合もありますcat
)、を使用してください。
cat /dev/zero >/dev/sdX
Webでの一般的な信念にもかかわらずdd
、ディスクへの書き込みにより適したものにする魔法はまったくありません。魔法は/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