因此,假设您已完成以下全部操作:
dd if=/dev/zero of=/dev/sdX bs=1M
然后,你想确保目的地真的归零(忽略来自的确认消息,dd
而不仅仅是轮询设备的开始或结束)。假设您必须读取整个磁盘 – 我会使用这个:
dd if=/dev/sdX bs=1M | grep -P '[^\x00]'
然而,由于这与管道一起工作标准输出,最终会出现错误,提示操作内存不足。所以,它毫无用处。
当然,创建整个磁盘的完整映像并保存它不是一个选择。但是,也许,这样做的同时能够以某种方式跳过0x00即时 – 这是解决方案之一。
有想法吗?
答案1
Linux 系统上有一个设备,/dev/zero
读取时总是返回零。
那么,将您的硬盘与此设备进行比较如何:
cmp /dev/sdX /dev/zero
如果将硬盘清零一切顺利,它将终止:
cmp: EOF on /dev/sdb
告诉您这两个文件是相同的,直到到达硬盘驱动器的末尾。如果硬盘驱动器上有非零位,则 cmp 将告诉您它在文件中的位置。
如果你已经pv
安装了该包
pv /dev/sdX | cmp /dev/zero
将使用进度条做同样的事情,以便在检查您的驱动器时让您感到有趣(EOF 现在将处于打开状态,-
而不是sdX
虽然)。
答案2
从https://superuser.com/a/559855/236344:
od
将用 替换相同内容的运行*
,因此您可以轻松地使用它来扫描非零字节:
$ sudo od /dev/disk2 | head
0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
234250000