Linux:从损坏的硬盘中复制仅可以完全读取的文件的最佳方法是什么?

Linux:从损坏的硬盘中复制仅可以完全读取的文件的最佳方法是什么?

我正在从损坏的 HDD(不是 SDD)复制,其中大约 15% 的文件会导致 I/O 错误。我只想要其余 85% 完整的文件,并获取损坏文件的列表。如何做到这一点?

cp 在第一次读取错误时停止。scp/rsync 会抱怨并删除副本(需要)并退出(不需要)。在 I/O 错误之后没有办法继续,至少在阅读 rsync(1) 手册时没有发现。

我Google了很久,都是关于其他需求的帖子:

  1. 告诉发帖者IO错误意味着硬盘损坏(我知道);
  2. 告诉发帖者一种复制单个文件的完好部分的方法,用零填充损坏的数据(我有 100k 个文件,每个文件都小于 10KB,损坏的文件对我来说没有用,即使只缺少一个字节);
  3. 告诉发布者如何重复运行 rsync(通过网络)来对抗不良连接并完成复制。
  4. 告诉发布者如何更改默认超时以让 rsync 更加努力地读取文件(我不想这样做)
  5. 告诉发布者运行 fsck 来修复文件系统错误。

感谢您阅读不需要的答案列表!

注意:这是一块有物理损坏的磁盘,已通过适当的诊断工具确认。我还进行了彻底的 fsck。

答案1

rsync --ignore-errors到目前为止,这似乎很管用。我没想到它会起作用,因为手册上说:

   --ignore-errors
          Tells --delete to go ahead and delete files even when there are I/O errors.

--delete我根本没有使用选项。

答案2

您可以使用 GNU ddrescue 创建分区的映像,跳过坏扇区。然后,当您以只读方式挂载映像时,您将在访问某些文件夹时收到快速文件系统错误,或者访问某些数据为零的文件。这里这里是一些有关 ddrescue 的教程。

相关内容