将 Linux 服务器镜像到外部 USB 硬盘

将 Linux 服务器镜像到外部 USB 硬盘

我的 google-fu 一定很烂。我还没有找到以下问题的好的解决方案:

  • 商用硬件上的众多 Linux 服务器
  • 尝试将恢复镜像复制到外部硬盘
  • 外部硬盘比源硬盘小,但比数据硬盘大
  • 外部驱动器通过 usb2 连接(速度慢)
  • 服务器的数据量从 20GB 到 400GB 不等
  • 服务器是远程的,因此手动访问很麻烦
  • 需要复制启动文件。
  • 当前为空的外部驱动器

基本上,寻找一种方法来使用从正在运行的 Linux 服务器内部到外部硬盘的重影解决方案,而无需启动 CD 等。我研究过的 rsync/cpio 解决方案与 grub/dev/proc 等配合得不太好。

我明白,由于系统没有离线,文件发生变化时它不会成​​为“镜像”,但没关系。

是否有任何免费/商业产品可以使用?

答案1

答案2

要自己完成此操作,您需要在初始设置后查看两个步骤的过程。

此初始设置是在目标磁盘上创建文件系统。您无法复制文件系统本身,因为它的格式与磁盘大小相符,而且您必须复制整个分区,包括包含已删除文件的空间。

所以做类似的事情

mkfs.ext3 /dev/sdb1

现在,每次您想要备份驱动器时,只需执行以下操作

  1. 复制引导加载程序

    dd if=/dev/sda of=/dev/sdb bs=446 count=1

  2. 复制文件系统

    挂载 /dev/sdb1 /mnt/backup;rsync -HaxX --delete / /mnt/backup/;卸载 /dev/sdb1

此方法涉及的 IO 量最少,但却能为您提供可启动的驱动器。

答案3

您想创建在线 Linux 服务器的备份映像吗?

我的建议是使用通过 ssh 或 netcat 建立的 dd 隧道:

如何使用 dd、netcat 和 ssh 隧道设置磁盘克隆?

您可能遇到磁盘一致性问题,因此我建议您随后尝试 rysnc 数据。

答案4

编辑:

我想我刚刚才明白,当您说“服务器是远程的,因此手动访问很麻烦”时,您还说外部硬盘连接到远程服务器,而不是您本地的计算机。我正在更改我的答案以反映我的新理解。

我会将外部驱动器分区为与源磁盘的分区结构紧密匹配(请记住,由于目标磁盘较小,因此保存大部分数据的分区需要较小),将相应的分区标记为活动分区,格式化分区(进行交换等),并使用 rsync 将每个源服务器文件系统的内容同步到每个分区中。在 rsync 上使用“存档”模式参数将确保保留符号链接、设备、所有权、权限等。

完成后,将引导加载程序安装到外部磁盘上。对于 GRUB,您要说的是获取外部驱动器和分区的适当“hd”编号和分区编号,运行grub,然后执行root (hdX,Y)和“setup (hdX)”(用驱动器和分区编号代替 X 和 Y)。

实际上,除非您有远程控制台访问权限,否则远程测试启动将会很麻烦。

相关内容