完整还原linux系统


20

我熟悉使用rsync备份系统中的各种文件,但是什么是完全还原计算机的最佳方法?

我过去尝试过的是:

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

这种方式是可行的,但我认为安装的每个软件包都不能100%之后运行。

我希望能够以最小的工作量来还原系统,并且一切工作都与进行备份时相同。另外,如果可能,请安装到其他计算机上,并且essentailly的两台计算机具有相同的软件包和数据。


当您说要安装在其他计算机上时,是指其他“相同/计算机”还是更多,例如台式机和笔记本电脑?
Ichorus

硬件会有所不同,但两者都希望使用相同的软件包
Simon Foster,2009年

Answers:


17

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

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

  • 使用rsync复制整个内容,例如:“ rsync -axvPH --numeric-ids ...”

在还原时,我这样做:

  • 使用sysrescuecd引导目标计算机,我通常会在USB记忆棒上保存“ 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还原整个事情。


3
我已经做过几次了,并且具有使用标准linux CLI命令的优势。我使用rsnapshot(围绕rsync的perl脚本)来备份到中央服务器。然后,从sysrescuecd启动并在分区表中添加内容后,将整个内容重新同步。顺便说一句,“ partprobe”将重新读取分区表
Mark Porter 2009年

好的,这可能被视为是一种卑鄙的行为,但是由于您可以像fdisk一样通过发出sysctl()来让内核重新读取分区表,因此您可能也拥有fdisk-与partprobe不同的是,根据我的经验,这样做它:fdisk / dev / yourdisk << EOF w EOF
Bernd Haug

感谢大家的建议,我知道那里一定有更好的解决方案。尝试这些建议,看看最适合我的方法。
西蒙·福斯特

3
不要忘记dd的计数!“ dd bs = 512 if = / dev / sda of = / backups / sda.layout count = 1”和“ dd bs = 512 if = / path / to / sda.layout of = / dev / sda count = 1”
史蒂芬(Steven

@Steven:胡扯!谢谢你的收获。我可以投票发表评论吗?
kbyrd

6

我从不完全克隆系统。您永远都不知道可能会发生什么变化,并且您的系统克隆映像已经过时。最好的方法是建立一个过程,使您可以生产功能相同的系统。一种可能是像Kickstart,AutoYaST或类似工具。保留良好的配置备份,理想情况下,使用Bcfg2,Puppet或CFEngine之类的配置管理系统来配置所有内容,而无需手动进行。然后,当您需要创建一个与您拥有的另一个系统相似的新系统,或者重新创建一个现有系统时,这是一个简单且定义明确的过程。


3

预先需要花费更多的精力,但是KickstartRevisor允许您自定义安装并在其他计算机上使用它。您可以包括设置文件的自定义版本。

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


2

获取系统恢复cd的副本,并在进行最小限度的初始安装后,从中启动,然后将其安装并chroot到磁盘中,然后执行rsync。完成后,您可能需要运行update-grub才能从正确的启动设备和内核启动它。


2

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

  1. 创建有效的最小系统。
  2. 将操作系统作为硬盘加载到livecd中。
  3. 将文件系统挂起并保存在某个位置。
  4. 用livecd加载目标系统。
  5. 准备目标硬盘驱动器并将其安装。
  6. 解压到已安装的硬盘驱动器。
  7. 输入chroot。
  8. 设置引导加载程序和其他与系统有关的内容。
  9. 重新启动并继续。
  10. 安装新软件/复制用户文件夹/根据需要添加其他文件。

2

尝试clonezilla live cd。您可以启动实时会话并为计算机创建映像,而无需安装任何软件。然后,您可以选择将映像副本存储在网络共享或远程计算机等上。


0

如果是完全相同的机器,我将使用它dd来创建磁盘映像,然后根据需要对其重新映像(如果需要,可以在以后更改某些配置)。

如果您要切换硬件,则在创建tarball或文件系统根目录的完整rsync备份方面已经取得了一些成功。我不确定为什么首先需要完整安装-只要进行完整备份,基本的Fedora安装就不是前提条件。


0

您的过程可能会导致许多问题,应该避免。

有两种主要的推荐方法可以解决此问题,第三种是纯粹用于构建开发环境的方法。

影像学

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

为了进行实际的映像,我建议您使用任何可以克隆硬盘驱动器的工具或产品。

配置/主目录备份

在主计算机上,定期(使用您喜欢的任何方法)备份以下所需的以下目录(或其他目录):

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

还原时,在有问题的计算机上重新安装操作系统,然后将每一个(或仅相关文件)复制到其正确的位置。

带有快照的虚拟机

在VMWare中创建虚拟机(或您喜欢的其他任何一种)。按照您的期望进行配置后,创建快照。然后可以轻松地将此快照还原到任意数量的新虚拟机或现有虚拟机。

通常,您仅应备份数据和配置(无论如何定义它们)。操作系统和软件可以随时轻松地重建:只有您自己的内容才有价值。如果此设置用于开发,并且您需要确保相同的环境(而不是简单地使事情再次运行),那么虚拟机中的快照确实是您的最佳选择。

成像是强力解决方案。如果可以的话,只需备份您的数据,不必担心操作系统本身。试图完全还原它正在引起麻烦。

如果您可以在这里阐明最终目的,我可以提供更详细的解决方案。


0

由于您说“硬件会有所不同”,因此SystemImager可以派上用场。

这只是一堆围绕PXE和Rsync的包装脚本。因此,它创建的“备份”只是备份的Linux服务器的完整目录结构。您可以“ cd”到该目录中,并在进给时更改内容。(当推出图像时,SystemImager自行管理更改网络设置。)

您可以将根目录切换到备份的服务器上,并运行yum或apt来安装软件,然后再推出映像。

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




0
  • 最安全的方法是克隆整个磁盘或至少相关分区,然后使用Live CD还原它们。

  • 另一种节省空间的方法是使用转储(对于XFS为xfsdump),但是在这种情况下,您将不得不手动重新创建(格式化)分区。不要忘记使用相同的参数创建它们,尤其是UUID和LABEL。

  • 您还可以将tar--xattrs 参数一起使用以保存每个文件的扩展属性。


1
Linux上的现代rsync具有-X和-A分别用于扩展属性和ACL。
kbyrd

0

partimage和partclone(Clonezilla的一部分)是用于创建完整系统映像的有用实用程序。

如您所见,完整的系统映像不一定是系统可移植的:通常是由于设备名称。

它可能很简单,例如在映像后(例如使用LiveCD)重新安装GRUB(最好在单独的/ boot分区上)和MBR。

另一种方法是使用配置管理工具来定义应用于基准映像的策略(例如Vagrant基本框);并将数据备份分离到块和/或对象存储中(EBS / S3,Openstack块存储/ Openstack对象存储)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.