web-dev-qa-db-ja.com

おそらく空のストレージデバイスにデータが存在するかどうかを確認する

したがって、次のフルパスを完了したとします。

dd if=/dev/zero of=/dev/sdX bs=1M

次に、宛先が本当にゼロ化されていることを確認します(ポーリングだけでなく、ddからの確認メッセージを無視します)デバイスの開始または終了)。ディスク全体を読み取る必要があると仮定すると、これを使用します。

dd if=/dev/sdX bs=1M | grep -P '[^\x00]'

ただし、これはstdoutのパイピングで機能するため、最終的には、操作のメモリが不足したというエラーが発生します。だから、それは役に立たない。

もちろん、ディスク全体のイメージ全体を作成して保存することはできません。しかし、おそらく、どういうわけかスキップできる間にそれを行うxその場で-それは解決策の1つになるでしょう。

アイデア?

4
XXL

Linuxシステムには、読み取り時に常にゼロを与えるデバイス/dev/zeroがあります。

それでは、ハードドライブをこのデバイスと比較してみてはどうでしょうか。

cmp /dev/sdX /dev/zero

ハードドライブをゼロにすることですべてがうまくいけば、それは次のように終了します:

cmp: EOF on /dev/sdb

ハードドライブの最後に到達するまで、2つのファイルは同じであることを通知します。ハードドライブにゼロ以外のビットがある場合、cmpはそれがファイルのどこにあるかを教えてくれます。

pvパッケージがインストールされている場合は、

pv /dev/sdX | cmp /dev/zero

プログレスバーでも同じことを行い、ドライブをチェックしている間も面白がっています(ただし、EOFはsdXではなく-になります)。

9
Neal

から https://superuser.com/a/559855/236344

odは同じものの実行を*に置き換えるので、ゼロ以外のバイトをスキャンするために簡単に使用できます。

$ Sudo od /dev/disk2 | head
0000000    000000  000000  000000  000000  000000  000000  000000  000000
*
234250000
1
Skylar Ittner