使用 DDrescue 备份损坏的 vBox VDI 上的本地磁盘

使用 DDrescue 备份损坏的 vBox VDI 上的本地磁盘

经过一番狡猾的猜测,我终于得到了这个命令来创建一个出现故障的远程磁盘(vbox)的本地 .img。

它起作用了,虽然很慢,但它起作用了:

ssh root@example  ddrescue -d /dev/sda1 - | pv | cat > /home/user/path/to/tester1.img | cat > /home/user/path/to/tester1.logfile

我的问题是关于命令的“| cat > /home/user/path/to/tester1.logfile ”部分......

显然这将花费几个小时并给磁盘带来压力,但我不想等待很长时间然后发现没有可以检查的日志文件。

是否有人比我拥有更好的 UNIX 技能,可以验证我的命令的日志文件部分或提供更好的解决方案?

谢谢

解决方案:
非常感谢(和抱歉)@davidgo

我最终使用它从故障的 .vdi 磁盘中保存了我的数据:

#ddrescue -d /dev/sda /media/sf_shared_folder/tester1.iso /media/sf_shared_foldertester-dd.log

使用他原来的解决方案,我没有看到 ssh 方向从“本地主机到远程”、“远程到本地”的变化,这引起了一些混乱。此外,当我尝试时,sshfs -C user@targetmachine:/home/user/path/to /m2最终出现了 ssh 错误“对等方重置连接”。

答案1

我非常怀疑该命令是否正在执行您要执行的操作。您看过 /home/user/path/to/tester1.img 了吗?我预计您会发现它仅包含 ddrescue 命令的输出,而不包含图像。

如果可以的话,我会在“示例”上使用 SSHFS(或 NFS 或其他)来通过网络在本地文件系统上公开 /home/user/path/to,然后使用 ddrescue 及其常规调用,即或示例

SSHFS 使用“FUSE”在本地计算机上远程公开远程文件系统。您可以在“示例”中使用如下命令

  mkdir /m2 
  sshfs -C user@targetmachine:/home/user/path/to /m2
  ddrescue -d /dev/sda1 /m2/tester1.iso /m2/tester-dd.log

上面 SSHFS 命令中的“-C”通过 SSH 启用压缩,这假定网络而不是 CPU 是一个限制。

答案2

完整的解决方案 备份和恢复损坏的(本地)vdi 的过程

1.) 在 vbox 管理器中将可启动 iso 磁盘添加到损坏的 vdi 并将 vdi 启动到其中(即 ubuntu liveCD)2.) 打开磁盘实用程序并确保目标磁盘未安装(即 /dev/ )

3.) 在启动的 iso 上安装 vbox 客户端附加组件以获取对共享文件夹的访问权限(假设共享文件夹已经存在)并通过终端切换到共享文件夹

4.)通过终端(共享文件夹内)将 gddrescue 安装到启动的 iso 上,运行:

$sudo su
# ddrescue -d /dev/sda backup.img BACKUP.log

(注意:日志文件又名映射文件,在备份过程中断时非常重要,它使 ddrescue 能够从中断点重新启动/继续该过程)

5.) 完成后,创建一个新的 vdi,安装一个最小操作系统(将被覆盖)。

6.) 在 vbox 管理器中将可启动 iso 磁盘添加到新的 vdi,并通过磁盘实用程序验证新的 vdi 的 /dev/sda 未安装

7.)再次安装 guest additions 和 ddrescue,然后运行:

$sudo su
#ddrescue -f /dev/sda backup.img RESTORE.log

(注意:日志文件又名映射文件,在恢复过程中断的情况下非常重要,它使 ddrescue 能够从中断点重新启动/继续该过程)

8.) 完成后,您现在拥有损坏的 vdi 的完美备份,但如果您使用 vdi 作为服务器,则还未完成。在这种情况下,当您启动新的 vdi 时,计算机将“无法提升”网络接口。发生这种情况的原因是主机为客户机提供了一个与损坏的 vdi 的网络接口不匹配的新网络接口。只需打开救援 shell 并运行

#ifconfig -a 

这将识别新的网络接口名称。然后编辑您机器的网络接口名称配置...(debian 10:例如,“eth0”)

#nano /etc/network/interfaces

添加正确的网络接口名称后运行:

#ifconfig "eth0" down && ifnfig "eth0" up

然后重新启动.. 就完成了.. 回去工作!:-)

我的参考: https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html#Important-advice https://manpages.debian.org/buster/gddrescue/ddrescue.1.en.html https://www.technibble.com/guide-using-ddrescue-recover-data/ https://www.tecmint.com/install-virtualbox-guest-additions-in-ubuntu/ https://askubuntu.com/questions/758594/no-networking-failed-to-bring-up-eth0

相关内容