我有一个失败的硬盘,我需要从中提取数据。我的dd
功夫现在让我失望了。我知道驱动器在扇区60515007到60517093 (每个扇区512 b)和多个其他位置出现故障。我要跳过那个区域。我如何在dd
中做到这一点?我需要在飞行中压缩它(也许是管道?)你能推荐一种很好的压缩算法吗?
发布于 2015-03-26 01:36:25
如果你真的想用dd
来做这件事,你需要把你的读物分开:
dd if=/dev/sda bs=512 count=60515006 | gzip -9 > dump1.gz
将把/dev/sda
的前60515006个部门转储给dump1.gz
,用gzip
压缩。然后
dd if=/dev/sda bs=512 skip=60517093 count=... | gzip -9 > dump2.gz
将跳过失败的部分,并转储下一个需要dump2.gz
的扇区。
如果您可以在某个地方节省磁盘容量,我强烈建议使用达德救援;它可以自动复制失败的磁盘(它不会停止I/O错误)。它的工作速度将比dd
快得多(它从大块读取开始,并且只在必要时读取较小的数量,以便在失败的部分检索数据),并避免您必须计算出所有跳过的内容等等。不过,它不支持压缩输出,因为它需要在输出文件周围查找。
https://unix.stackexchange.com/questions/192598
复制