我熟悉使用 rsync 备份系统中的各种文件,但是完全恢复机器的最佳方法是什么。
我过去尝试过的是:
- 从 Fedora 安装盘进行基本格式化/重新安装
- 确保启用网络
- 将 rsync 备份中的所有内容复制到新安装系统的顶部
这种方式可以工作,但我不认为安装的每个软件包在之后都能 100% 工作。
我希望能够以最少的努力恢复我的系统,并且一切都与备份时一样。另外,如果可能的话,安装到其他机器上,并且基本上有两台机器具有相同的包和数据。
我熟悉使用 rsync 备份系统中的各种文件,但是完全恢复机器的最佳方法是什么。
我过去尝试过的是:
这种方式可以工作,但我不认为安装的每个软件包在之后都能 100% 工作。
我希望能够以最少的努力恢复我的系统,并且一切都与备份时一样。另外,如果可能的话,安装到其他机器上,并且基本上有两台机器具有相同的包和数据。
这是我所做的(假设有一个磁盘,位于 /dev/sda)
使用dd备份MBR和分区表:“dd bs=512 count=1 if=/dev/sda of=/backups/sda.layout”
使用 rsync 复制整个内容,例如:“rsync -axvPH --numeric-ids ...”
在恢复我这样做:
使用sysrescuecd启动目标机器,我通常会将“sda.layout”文件放在 U 盘上。
使用 dd 恢复 MBR/分区表:“dd bs=512 count=1 if=/path/to/sda.layout of=/dev/sda”
使用 partprobe (感谢评论者 Mark)让内核重新读取分区表。
在 /restore/ 下挂载所有不同的分区。我在还原下使挂载点相同,所以如果我的源上有 /boot、/var,我最终会得到 /restore/boot、/restore/var 等。
使用 rsync 来恢复整个事情。
我从不完全克隆系统。您永远不知道可能会发生什么变化,并且您的系统克隆映像在发生一次更改时就已经过时了。最好的方法是建立一个程序,让您生产功能相同的系统。一种可能是 Kickstart、AutoYaST 或类似工具。保持良好的配置备份,最好使用 Bcfg2、Puppet 或 CFEngine 等配置管理系统来配置所有内容,而不是手动进行。然后,当您需要创建一个与您拥有的另一个系统相似的新系统或重新创建现有系统时,这是一个简单且定义明确的过程。
这需要更多的努力,但Kickstart和Revisor允许您自定义安装并在其他机器上使用它。您可以包含设置文件的自定义版本。
您可能还需要考虑将主目录保存在单独的分区上。在另一个分区上进行全新安装时,您可以不理会该分区。
获取系统恢复 cd的副本,在初始最小安装后,从它启动,挂载并 chroot 到您的磁盘,然后执行 rsync。完成后,您可能需要运行 update-grub 以使其从正确的引导设备和内核引导。
我一直认为 Gentoo 安装新系统(从备份或其他方式)的方式是最好的,因为它很简单。
试试 clonezilla live cd。您可以启动到实时会话并为您的机器映像,而无需安装任何东西。然后,您可以选择将图像副本存储在网络共享或远程计算机等。
如果它是完全相同的机器,我只会使用它
dd
来创建磁盘映像,然后根据需要重新映像它(如果合适的话,之后可能会更改一些配置)。如果您要切换硬件,我已经成功地创建了文件系统根目录的 tarball 或完整的 rsync 备份。我不知道你为什么需要先完整安装——只要你进行完整备份,基本的 Fedora 安装不应该是先决条件。
最安全的方法是克隆整个磁盘或至少是相关分区,然后使用 Live CD 恢复它们。
另一种更节省空间的方法是使用转储(用于 XFS 的 xfsdump),但在这种情况下,您必须手动重新创建(格式化)分区。不要忘记使用相同的参数创建它们,尤其是 UUID 和 LABEL。
您还可以使用带有参数的tar
--xattrs
来保存每个文件的扩展属性。您的程序可能会导致许多问题,应该避免。
有两种主要的推荐方法可以解决此问题,如果您纯粹是尝试构建开发环境,则可以使用第三种方法。
成像
如果您要恢复到的硬件相同或足够相似,请使用磁盘映像工具制作整个硬盘驱动器或阵列的副本。当您希望恢复时,只需使用此映像重新映像有问题的机器。如果您映像到多台机器,请注意您将需要更新其他设备上的任何特定于机器的设置(主机名、静态 IP 地址等),以使它们不会相互冲突。
要进行实际映像,我会推荐任何可以克隆硬盘的工具或产品。
配置/主目录备份
在您的主计算机上,定期备份(使用您喜欢的任何方法)您需要的以下目录(或其他目录):
/home - 所有用户个人设置、文档和文件
/etc - 配置
/opt - 未通过包管理器安装的特殊软件
/usr/local - 未通过包管理器安装的特殊软件
/var - 日志等
还原时,在相关机器上重新安装操作系统,然后将其中的每一个(或仅相关文件)复制到适当的位置。
带有快照的虚拟机
在 VMWare(或您喜欢的其他任何东西)中创建一个虚拟机。当它按照您的意愿进行配置时,创建一个快照。然后可以轻松地将此快照还原到任意数量的新虚拟机或现有虚拟机。
通常,您应该只备份数据和配置(无论您如何定义这些)。操作系统和软件可以随时轻松重建:只有您自己的内容才是有价值的。如果此设置用于开发,并且您需要确保相同的环境(而不是简单地让事情再次运行),那么虚拟机中的快照确实是您最好的选择。
成像是蛮力解决方案。如果可以,只需备份您的数据,而不必担心操作系统本身。试图完全恢复它是自找麻烦。
如果您可以在这里澄清您的最终意图,我可以提供更详细的解决方案。
既然你说“硬件会有所不同”,SystemImager就可以派上用场了。
它只是一堆围绕 PXE 和 Rsync 的包装脚本。因此,它创建的“备份”只是您备份的 Linux 服务器的完整目录结构。你可以“cd”到这个目录,并在你喂食的时候改变周围的东西。(当您推出图像时,SystemImager 会自行管理更改网络设置。)
您可以 chroot 到您的备份服务器并运行 yum 或 apt 安装软件,然后再将映像推出。
编辑:您可以查看创建分区/逻辑卷的 SI 脚本,并根据目标机器的磁盘大小对其进行修改。您还可以添加/删除内核模块。