Linux 如何备份整个系统并恢复

大家见过Windows系统备份恢复所有环境的教程。MacOS有时间机器。Linux下做到整个备份恢复并保留全部环境设置的教程不多。今天刚好测试了下。并记录下来以供大家参考。

缘由是我在一个虚拟机做了很多环境设置,但是不小心把磁盘搞的太大(实际占用空间不多,但是无论怎么压缩也减少不了体积。),备份起来不方便。不多说看下面。

先看下我的目录结构

sda   (旧磁盘)          8:0  0 256G 0 disk

├─sda1           8:1  0  99M 0 part /boot/efi

├─sda2           8:2  0 216M 0 part

└─sda3           8:3  0  40G 0 part /

sdb    (新磁盘)         8:0  0 1024G 0 disk

├─sdb1           8:1  0  99M 0 part

├─sdb2           8:2  0 128M 0 part 

├─sdb3           8:2  0 873G 0 part 

└─sdb4           8:3  0 150G 0 part 

1,虚拟机采用了LVM动态卷(方便增加容量,其实他也可以缩小容量,但我的不行。)没有采用这个技术,方法的就更方便了。先准备一个外接的磁盘(只要是容量大于整个系统占用的容量即可),然后备份所有文件,命令如下(默认都是root权限):

tar -cvpzf /media/D/backup.tar.gz –exclude=/media –one-file-system /

c:创建压缩包

v:输出压缩信息

p:保持文件原有的权限和属性

z:压缩文件为 .gz

f:指定文件名

–exclude=/example/path:不压缩指定路径下面的文件(所以你挂载的路径要排除,不然死循环了)

-one-file-system:不备份其他文件系统中的文件(只备份和系统根分区一样分区类型的文件。

如果你在备份的时候看到 /proc /dev /sys 这些目录有错误,不要惊慌。这些目录本身不是实体,无法备份。

2,备份好压缩包后。在新磁盘创建同样的分区大小和格式。如果是换到新机器的话,你还要准备一个 Live CD 镜像,从镜像启动。类似 WinPE。启动好系统后,进行如下命令:

挂载新磁盘 mount /dev/sdb3(你的磁盘位置,不清楚用 df -h 查看) /media/D

转到目录 cd /media/D/

解压备份
tar -xvpzf /path/to/backup.tar.gz -C /media/D/ --numeric-owner

用 LS 命令查看文件是否缺失 ,如果没有以下目录,自行用 mkdir 补全

proc sys mnt media tmp dev run

当然我说的是我的。你可以在备份的时候记录下原来的目录有哪些。

3,创建虚拟环境 chroot /media/D/

创建引导 grub-install –recheck –no-floppy /dev/sdb1(这个目录看你具体情况)

修改 fstab 文件

echo "`blkid | grep sdb1 | awk '{printf $2}' | sed 's/"//g'` / ext4 defaults 0 1" >> /etc/fstab

这里注意下,你可以对照下原来的 fstab 文件。做对应修改。应该变的只有 UUID 名和路径。

再次查看下 vi /etc/fstab 。看是否正确,WQ保存。

升级引导 update-grub

exit 这个命令很重要。不用这个命令退出,所做修改无效哦!

reboot 重启,试一试看吧。我相信很多可能会失败。

要么卡在 grub 或者 initramfs。

这个只是大致的教程,具体实操要靠自己。

卡在 grub 的话 可以试一试简单的方法如下:

启动到 live cd,执行如下

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update

sudo apt-get install -y boot-repair && boot-repair

按提示修复 grub 引导

initramfs 的话,root 目录设置错了。

发布者

湘笃秀

曲水流觞,维湘笃秀