我的 google-fu 一定很烂。我还没有找到以下问题的好的解决方案:
- 商用硬件上的众多 Linux 服务器
- 尝试将恢复镜像复制到外部硬盘
- 外部硬盘比源硬盘小,但比数据硬盘大
- 外部驱动器通过 usb2 连接(速度慢)
- 服务器的数据量从 20GB 到 400GB 不等
- 服务器是远程的,因此手动访问很麻烦
- 需要复制启动文件。
- 当前为空的外部驱动器
基本上,寻找一种方法来使用从正在运行的 Linux 服务器内部到外部硬盘的重影解决方案,而无需启动 CD 等。我研究过的 rsync/cpio 解决方案与 grub/dev/proc 等配合得不太好。
我明白,由于系统没有离线,文件发生变化时它不会成为“镜像”,但没关系。
是否有任何免费/商业产品可以使用?
答案1
答案2
要自己完成此操作,您需要在初始设置后查看两个步骤的过程。
此初始设置是在目标磁盘上创建文件系统。您无法复制文件系统本身,因为它的格式与磁盘大小相符,而且您必须复制整个分区,包括包含已删除文件的空间。
所以做类似的事情
mkfs.ext3 /dev/sdb1
现在,每次您想要备份驱动器时,只需执行以下操作
复制引导加载程序
dd if=/dev/sda of=/dev/sdb bs=446 count=1
复制文件系统
挂载 /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)。
实际上,除非您有远程控制台访问权限,否则远程测试启动将会很麻烦。