我正在从损坏的 HDD(不是 SDD)复制,其中大约 15% 的文件会导致 I/O 错误。我只想要其余 85% 完整的文件,并获取损坏文件的列表。如何做到这一点?
cp 在第一次读取错误时停止。scp/rsync 会抱怨并删除副本(需要)并退出(不需要)。在 I/O 错误之后没有办法继续,至少在阅读 rsync(1) 手册时没有发现。
我Google了很久,都是关于其他需求的帖子:
- 告诉发帖者IO错误意味着硬盘损坏(我知道);
- 告诉发帖者一种复制单个文件的完好部分的方法,用零填充损坏的数据(我有 100k 个文件,每个文件都小于 10KB,损坏的文件对我来说没有用,即使只缺少一个字节);
- 告诉发布者如何重复运行 rsync(通过网络)来对抗不良连接并完成复制。
- 告诉发布者如何更改默认超时以让 rsync 更加努力地读取文件(我不想这样做)
- 告诉发布者运行 fsck 来修复文件系统错误。
感谢您阅读不需要的答案列表!
注意:这是一块有物理损坏的磁盘,已通过适当的诊断工具确认。我还进行了彻底的 fsck。
答案1
rsync --ignore-errors
到目前为止,这似乎很管用。我没想到它会起作用,因为手册上说:
--ignore-errors
Tells --delete to go ahead and delete files even when there are I/O errors.
--delete
我根本没有使用选项。