检查假定为空的存储设备上是否存在任何数据

检查假定为空的存储设备上是否存在任何数据

因此,假设您已完成以下全部操作:

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

相关内容