我需要从出现故障的硬盘中保存数据。
听上去像ddrescue 或 myrescue(或者可能克隆齐拉?)将是我在这里最好的朋友,但我只是想知道什么可能会更快:
- 使用 dd/ddrescue/myrescue/clonezilla 将故障驱动器简单地克隆到具有相同容量的新驱动器
- 使用 rsync/tar/cp 将文件从故障驱动器移动到新驱动器
?
dd-ish 选择避免在内核空间和用户空间之间来回移动数据,对吧?但 rsync 和其他人避免移动空白空间,对吧?
如果我选择 dd-ish 解决方案,另一个奇怪的幸运点是:故障驱动器当前以只读方式安装(我认为是故障过程的一部分),所以我想我不必担心在 dd 时数据更改'ing。
这是根分区,因此 dd 会很方便,因为我应该能够在完成后启动新驱动器。
答案1
毫无疑问,rsync 会更快。 dd 将必须读取和写入整个 1.5TB,并且它将命中每个坏块,从而触发多次读取重试,这将进一步减慢本已很长的过程。 rsync 只需读取重要的块,并且由于每个坏块不太可能出现在现有文件或目录中,因此 rsync 遇到的坏块会更少。
使用 rsync 进行磁盘救援的坏处是,如果它确实遇到坏块,它就会放弃包含该坏块的文件或目录。如果一个目录包含很多子目录并且 rsync 放弃读取它,那么您的副本可能会丢失很多您想要保存的内容。问题在于 rsync 依赖文件系统结构来告诉它要复制什么,而文件系统本身不再值得信赖。
因此,我首先会使用 rsync 将文件从驱动器上复制下来,但我会非常仔细地查看输出,看看遗漏了什么。如果您无法忍受 rsync 无法复制的内容,请使用 dd 或其他低级块复制方法之一。然后,您可以对副本进行 fsck、挂载并查看是否可以恢复更多文件。