我希望能够盲目地备份我的整个硬盘,以便在出现任何问题时可以盲目地自动恢复。
我对备份数据不感兴趣,而是特别想知道如何备份一切、整个Linux操作系统及所有配置等。
换句话说,如果我有第二台具有完全相同硬件的计算机,我该如何复制第一台计算机的安装和所有数据,而无需安装操作系统、进行配置等?
我已经使用 rsync 制作了完整副本,以便可以更新。现在,如果再次发生问题,我该如何恢复?我也使用 dd 存储了 MBR。
答案1
有几种方法可以实现这一点,如果您想要完整安装的映像并将辅助硬盘(或网络位置)作为目标,则假设您的安装在 /dev/sda 上(在此示例中,启动可能是 /dev/sda1,交换是 /dev/sda2,根是 /dev/sda3)并且您的辅助硬盘或网络位置安装在 /mnt/backup
dd if=/dev/sda1 | bzip2 -9 > /mnt/backup/boot-image.bz2
dd if=/dev/sda3 | bzip2 -9 > /mnt/backup/root-image.bz2
dd if=/dev/sda count=512 > /mnt/backup/sda.mbr
您会注意到交换被遗漏了。
要恢复映像,您可以使用 livecd 或类似程序启动,挂载备份位置,然后运行:
# caution this will erase /dev/sda
dd if=/mnt/backup/sda.mbr of=/dev/sda
此时 /dev/sda 的分区、表应该已恢复,并且在您运行时可见:
fdisk -l
因此你可以使用以下方法恢复:
bzcat /mnt/backup/boot-image.bz2 | dd of=/dev/sda1
bzcat /mnt/backup/root-image.bz2 | dd of=/dev/sda3
mkswap /dev/sda2
删除可启动媒体,重新启动,系统已恢复
但是,对大型文件系统进行映像通常不是更好的选择,因为这将包含可用空间中的垃圾,我建议您跳过上面 sda3 的步骤,而是备份使用:
cd /; tar -cjf /mnt/backup/root.tar.bz2 / -X /tmp/exclude.txt
您显然首先需要创建 /tmp/exclude.txt,其中列出要从备份中排除的位置,例如:
/dev/*
/proc/*
/sys/*
/tmp/*
/mnt/*
然后从你的 LiveCD 或者其他任何地方恢复:
mkfs.ext3 -L root /dev/sda3
mkdir /mnt/restore; mount /dev/sda3 /mnt/restore; cd /mnt/restore
tar -xjvpf /mnt/backup/root.tar.bz2
或者使用 rsync,在这种情况下只需创建文件系统并像上面那样挂载它然后 rsync 回内容。
答案2
您的帖子有点令人困惑,因为您问如何操作,但显然想使用 rsync。相反,我建议购买足够大小的外部硬盘,然后将系统的磁盘驱动器克隆到该硬盘上。这是我所知道的恢复完整系统的最快方法。
答案3
既然您提到要备份整个磁盘,那么最好的解决方案是使用实时 CD 克隆发行版。
这将允许您逐一复制每个扇区和分区,无论是复制到另一个驱动器还是复制到图像文件。
克隆方法的优点是您可以压缩和加密图像,或者通过网络克隆。
您还可以选择仅恢复特定分区。
您没有提到您的操作系统,所以我将提到 ZFS(不是产品,而是文件系统)。ZFS 允许您在操作系统运行时创建、传输和恢复快照。您可以拥有多个快照甚至版本,每次快照时只有更改会占用带宽和存储空间,而不是整个磁盘。同样,根据您的操作系统,您可以将根分区安装在 ZFS 池上。