我有时使用dcfldd,因为它具有更多的function,比普通的dd更容易使用。 它提供了一个恒定的状态,更新速度更快,而且它的模式input比从/ dev / zero或其他任何设备读取要快得多。
作为一个例子,假设我想用dcfldd擦一个驱动器,我会这样做
dcfldd pattern="00" of=/dev/hda bs=4096
在哪里写字节“00000000”的驱动器,然后你可以使用vf =函数来validation模式。
但是我注意到了一些问题,想知道你们有没有人可以帮忙。 当我运行这个
dcfldd pattern="FF" of=/dev/hda bs=4096; sync or dcfldd pattern="11111111" of=/dev/hda bs=4096; sync
我可以用1来填充驱动器,而且速度非常快。 我可以填充一个74GB的驱动器,让我们说5GB的1,在它被清零之后。 如果我在Linux中使用像xxd或hd这样的hex编辑器,我可以看到所有的1。
虽然如果我运行这个命令,
dcfldd pattern="00" of=/dev/hda bs=4096; sync
比方说只有1GB的0值,应该还有4GB的值。 看到我写了1GB的5GB,1的只写了1GB的0。
虽然如果我看一下hex编辑器,驱动器全是0,即使软件声明它只写了1的0的0。 我试图运行尽可能短的程序运行后几乎发送一个SIGINT。
任何想法为什么发生这种情况,你可以复制它?
如果您指定块的数量而不是手动中断,会发生什么情况?
time dcfldd pattern="FF" of=/dev/hda bs=4096 count=102400; sync
然后做
time dcfldd pattern="00" of=/dev/hda bs=4096 count=51200; sync
并比较结果的时间。 然后查看磁盘上的数据以查看是否应该将零变为零的边界(本例中大约为200兆字节*)。
*这是真正的 MB(1024 * 1024),而不是“可能” – 字节。
要获得任何有意义的结果,除非要覆盖整个分区或磁盘,否则需要提供一个计数参数。 在你提供的例子中,你没有指定一个计数。 我不知道你曾经期望得到5GB或1GB的零。