因此,我的硬盘驱动器出现故障。我想先删除其中的数据,然后再发送替换数据。我正在尝试使用dd if=/dev/zero of=/dev/sdXX
,但是它在第一个写入错误时停止。如何用零覆盖驱动器,而忽略写入错误?conv=noerror
似乎只会影响输入文件。
badblocks
也停止错误?也许您可以用它进行破坏性的写作?
badblocks
,以确保在周一归还磁盘之前有多少坏块。它还成功擦除了磁盘,但是花费了将近50个小时。
因此,我的硬盘驱动器出现故障。我想先删除其中的数据,然后再发送替换数据。我正在尝试使用dd if=/dev/zero of=/dev/sdXX
,但是它在第一个写入错误时停止。如何用零覆盖驱动器,而忽略写入错误?conv=noerror
似乎只会影响输入文件。
badblocks
也停止错误?也许您可以用它进行破坏性的写作?
badblocks
,以确保在周一归还磁盘之前有多少坏块。它还成功擦除了磁盘,但是花费了将近50个小时。
Answers:
我与ddrescue一起使用的参数擦除驱动器/dev/sdb
(从中填充零/dev/zero
)并将输出记录到file中log.txt
:
ddrescue --force /dev/zero /dev/sdb log.txt
如果您只是想擦拭驱动器,请尝试dban
从站点:
Darik的Boot and Nuke(“ DBAN”)是一个独立的启动磁盘,可以安全擦除大多数计算机的硬盘。DBAN会自动并完全删除它可以检测到的任何硬盘的内容,这使其成为批量或紧急数据销毁的合适工具。
作为记录,dd还可以选择conv=noerror
跳过错误。如果输入文件中有错误,并且在不使用时/dev/zero
,您要使用conv=noerror,notrunc
或conv=noerror,sync
防止dd截断输入文件上存在错误的输出文件。
对于您的查询,您可以尝试使用以下命令:
dd if=/dev/zero of=/dev/sdXX conv=noerror
为了加快处理速度,并可能避免驱动器在大步中死,您还可以尝试将字节大小从默认的512(使dd逐个读取,这很慢)增加到更大的值,例如4K(这是原来的八倍):
dd if=/dev/zero of=/dev/sdXX bs=4K conv=noerror
注意:使用较大的字节大小时,跳过的错误可能会使可读数据段略小于您选择的字节大小,但是在整个磁盘运行完整个磁盘之后,任何人仍然不可能从这些段中获取任何信息。处理。
除此之外,我确信硬盘驱动器制造商会妥善处理退回的硬盘以进行保修更换,以防万一驱动器在完全完成覆盖过程之前发生故障。
man dd
显示“ noerror”表示“读取错误后继续”
绝对不是高级用户解决方案,但是如果写错误很少见,那么您可能只想在错误发生后手动继续。
从理论上讲,您可以编写脚本来自动执行此操作,但这并不是一件容易的事,我宁愿编写一个工具来完成这项工作,也不必费心编写dd。
seek=BLOCKS
skip BLOCKS obs-sized blocks at start of output