完全恢复linux系统

我熟悉使用rsync从我的系统备份各种文件,但完全恢复机器的最佳方法是什么?

我过去试过的是:

  1. 从Fedora安装盘执行基本格式/重新安装
  2. 确保networking已启用
  3. 复制从新安装的系统顶部的rsync备份的所有内容

这种方式的作品,但我不认为所有已安装的包装100%以后工作。

我希望能够以最小的努力恢复我的系统,并且一切工作与备份时一样。 另外如果可能的话,安装到其他机器,并essentailly有两个具有相同的包和数据的机器。

这就是我所做的(假设在/ dev / sda中有一个磁盘)

  • 使用dd来备份MBR和分区表:“dd bs = 512 count = 1 if = / dev / sda = / backups / sda.layout”

  • 使用rsync来复制整个东西,如:“rsync -axvPH –numeric-ids …”

在恢复我这样做:

  • 用sysrescuecd引导目标机器,我通常会在U盘上有'sda.layout'文件。

  • 用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来恢复整个事情。

我从来没有完全克隆系统。 你永远不知道会发生什么变化,你的系统克隆的图像已经超出了发生变化的那一天。 最好的办法是build立一个程序,让你制作function相同的系统。 一种可能性是像Kickstart,或AutoYaST或类似的工具。 保持configuration的良好备份,最好使用configurationpipe理系统(如Bcfg2,Puppet或CFEngine)来configuration一切,而不是手动完成。 那么当你需要创build一个与另一个类似的新系统,或者重新创build一个现有的系统时,这是一个简单明了的过程。

这需要更多的努力,但是Kickstart和Revisor允许您自定义安装并在其他机器上使用它。 您可以包含自定义版本的设置文件。

您可能还需要考虑将您的主目录保留在单独的分区上。 您可以在另一个分区上进行全新安装的同时单独保留该分区。

抓住一个系统恢复光盘的副本,并在您最初的最小安装后,从它启动,挂载和chroot到您的磁盘,然后执行rsync。 完成后,可能需要运行update-grub才能从正确的引导设备和内核启动。

我一直认为Gentoo安装新系统的方式(从备份或其他)是最好的,由于其简单。

  1. 创build工作,最小的系统。
  2. 将工作系统作为livecd中的硬盘加载。
  3. 调整文件系统并保存在某个地方。
  4. 使用livecd加载目标系统。
  5. 准备好目标硬盘并安装它。
  6. 坚持安装硬盘驱动器。
  7. inputchroot。
  8. 设置bootloader和其他系统相关的东西。
  9. 重新启动并去。
  10. 安装新的软件/复制用户文件夹/根据需要添加其他文件。

尝试clonezilla live cd。 您可以启动进行实时会话,并且无需安装任何东西即可为您的机器成像。 然后,您可以select将图像的副本存储在networking共享或远程机器上等。

如果是完全相同的机器,我只需要使用dd创build一个磁盘映像,然后根据需要重新映像(如果适用,可能会更改某些configuration)。

如果您正在切换硬件,我已经成功创build了一个tarball或完整的文件系统根的rsync备份。 我不确定为什么你需要首先完成安装 – 只要你进行完整的备份,基本的Fedora安装不应该是一个先决条件。

你的程序可能会导致很多问题,应该避免。

有两个主要的推荐方法可以解决这个问题,如果你纯粹试图build立一个开发环境的话,还有三分之一。

成像

如果要恢复的硬件将相同或相似,请使用磁盘映像工具复制整个硬盘驱动器或arrays。 当您希望恢复时,只需使用此图像重新映像有问题的机器即可。 如果您映像到多台计算机,请注意您需要更新其他设备上的任何计算机特定设置(主机名,静态IP地址等),以使它们不会相互冲突。

要做实际的成像,我会推荐任何可以克隆硬盘驱动器的工具或产品。

configuration/主目录备份

在您的主机上,定期备份(无论您喜欢什么方法),无论您需要以下目录(或其他):

/ home – 所有用户个人设置,文档和文件
/ etc – configuration
/ opt – 没有通过软件包pipe理器安装的特殊软件
/ usr / local – 没有通过软件包pipe理器安装的特殊软件
/ var – 日志等

恢复时,请在相关机器上重新安装操作系统,然后将每个(或仅相关文件)复制到适当的位置。

具有快照的虚拟机

在VMWare中创build一个虚拟机(或其他任何你喜欢的)。 当它被configuration为你想要的时候,创build一个快照。 这个快照可以很容易地恢复到任何数量的新的或现有的虚拟机。

一般来说,你只应该备份数据和configuration(不过你要定义这些)。 操作系统和软件可以随时重build:只有你自己的内容是有价值的。 如果这个设置是为了开发,而且你需要确保一个相同的环境(而不是简单地让事情再次运行),那么虚拟机中的快照确实是你最好的select。

成像是powershell解决scheme。 如果可以,请备份您的数据,不要担心操作系统本身。 试图完全恢复它是在寻求麻烦。

如果你能澄清你的最终意图是在这里,我可以提供一个更详细的解决scheme。

既然你说“硬件将是不同的”, SystemImager可以非常方便。

这只是一堆围绕PXE和Rsync的包装脚本。 因此,它创build的“备份”只是备份Linux服务器的完整目录结构。 你可以“cd”进入这个目录,并改变你的饲料。 (当您将图像推出时,SystemImager自行pipe理更改的networking设置。)

您可以将chroot放入备份的服务器,然后运行yum或apt来安装软件,然后再将图像推出。

编辑:您可以看看创build分区/逻辑卷的SI脚本,并根据目标机器的磁盘大小对其进行修改。 您也可以添加/删除内核模块。

Mondo Rescue运气非常好。 基本上它会将所有的文件和分区备份到可引导的CD中以供以后使用。 它可以处理分区和驱动器的变化。

http://www.mondorescue.org/

partimage可以帮助这个

  • 最安全的方法是克隆整个磁盘或至less相关的分区,并使用Live CD进行恢复。

  • 另一个更节省空间的方法是使用dump (xfsdump for XFS),但在这种情况下,您必须手动重新创build(格式化)分区。 不要忘记使用相同的参数创build它们,尤其是UUID和LABEL。

  • 您也可以使用带有--xattrs参数的tar来保存每个文件的扩展属性。

partimage和partclone(部分Clonezilla)是创build完整系统映像的有用工具。

正如您所识别的,完整的系统映像不一定是系统可移植的:通常是因为设备名称。

这可能与重新安装GRUB(最好在单独的/启动分区上)和成像后的MBR(例如LiveCD)一样简单。

另一种方法是使用configurationpipe理工具来定义适用于基准映像的策略(如stream浪基础框)。 并将数据备份分离成块和/或对象存储(EBS / S3,OpenStack块存储/ Openstack对象存储)