Linux系统备份与系统迁移新盘
目录一、系统备份二、系统迁移到新盘一、系统备份这里我备份的是CentOS7系统,实验是在kvm上进行,也可以用vmware模拟,这样更便捷一点。1、首先我们给需要备份的机增添一块硬盘,并格式化好用来存放打包文件:
2、然后切换root用户来进行对第二块盘的挂载,挂载到/mnt目录:
mount/dev/vdb1/mnt3、接着我们执行“cd/mnt”进入挂载目录,对整个文件系统进行打包:
#这里有两种压缩打包方式:tarcvpzfbackup.tgz--exclude=/proc--exclude=/mnt--exclude=/sys/tarcvpjfbackup.tar.bz2--exclude=/proc--exclude=/mnt--exclude=/sys/-p或--same-permissions用原来的文件权限还原文件-f或--file=指定备份文件-c或--create建立新的备份文件-v或--verbose显示指令执行过程-z或--gzip或--ungzip通过gzip指令处理备份文件-j通过bzip2方式压缩或解压,最后以.tar.br2为后缀。压缩后大小小于.tar.gz有些目录是无用的,例如“/proc”、“/sys”。当然,“backup.tgz”这个文件本身必须排除在外,否则你可能会得到一些超出常理的结果,像上面的情况并没有排除“backup.tgz”,这是因为我进入到/mnt目录下对“/”进行打包,且排除了/mnt,如果没有排除当前目录,就需要加上“--exclude={打包的文件名}”。还有就是如果不把“/mnt”排除在外,那么挂载在“/mnt”上的其它分区也会被备份。另外需要确认一下“/media”上没有挂载任何东西(例如光盘、移动硬盘),如果有挂载东西,必须把“/media”也排除在外。
打包好后如下图:
4、接下来我们可以将其备份盘拔出插到另一台机解压恢复系统。
而在Linux中有一件很美妙的事情,就是你可以在一个运行的系统中恢复系统,而不需要用boot-cd来专门引导。当然,如果你的系统已经挂掉不能启动了,你可以用LiveCD来启动,效果是一样的。
第一种恢复是进入运行系统中解压恢复:
开机进入后可以看到第二块盘,我们把它挂载到“/mnt”目录,然后查看一下/boot/grub2/grub.cfg文件,记下它的部分参数,以及查看“/”的安全上下文,如下:
然后我们开始解压到根目录,解压的文件会覆盖分区上的所有文件。
tarxvpfzbackup.tgz-C/#如果是使用Bzip2压缩的,应该用:tarxvpfjbackup.tar.bz2-C/解压完成后,查看下/boot/grub2/grub.cfg文件内容,变成了备份系统的引导文件参数了,如下图:
接着我们查看一下解压后的“/”的selinux标签(即安全上下文context):
现在我们把grub.cfg文件的里面引导的分区UUID参数改为现在grub.cfg文件所在分区的UUID,用命令“blkid”查看,而“vmlinuz-3.10.0-1160.el7.x86_64”路径如果没有作boot分区,而现在只有一个“/”,那么引导文件里需要改为/boot/vmlinuz-3.10.0-1160.el7.x86_64,“ initramfs-3.10.0-1160.el7.x86_64.img”的路径亦然。
修改grub.cfg和/etc/fstab完后如下图,保存退出重启:
重启后,进入到登陆界面,我们输入root账号和密码却登不进去,一直闪退回到登陆界面,这是因为selinux的安全作用,在我们解压时恢复的系统,查看了目录的selinux标签值,发现有些目录发生了改变,而改变的在对照selinux政策后,如果不匹配,它就会拒绝,这样我们不匹配的文件或进程就会执行不了(下面的改变并不影响,这里只是做个改变的例子,selinux的信息都记录在/var/log/auditd/auditd.log中),如下图:
解压前的原系统安全上下文解压后的系统的安全上下文为了可以登陆进入,我们在选择系统启动时按“e”进入修改引导配置界面,在linux16这行最后加上下面的命令,可以使我们启动系统跳过selinux的检查。
rd.breakenforcing=0之后我们进入到下图的界面,执行“exit”退出继续启动。
接着就可输入账号密码成功登陆了
此时的selinux是宽恕状态(Permissive),我们执行以下命令来修改目录以及目录下文件的selinux标签(安全上下文)回到原本的模样。
restorecon-Rv/它会进行一个递归的重打标签操作,重打标签会根据selinux数据库打
selinux政策文件在/etc/selinux/targeted/contexts/files/file_contexts
第二种是用LiveCD来启动进入修复模式,挂载目录解压恢复系统
首先把有备份系统的盘查到另一台机,修改启动为镜像启动
启动机器后,我们安装如下步骤进入到我们的修复模式。
切换到bash后,我们挂载备份盘/dev/vdb1,接着把压缩的备份系统解压到“/”目录,覆盖根目录下的文件。
解压完成后,我们查看一下文件属性:
ls-Z/发现它的selinux标签(安全上下文)都没有改变,保留了原来的文件属性,相较于第一种方式我们不用再修复selinux标签。
接着我们修改它的/etc/fstab文件和/boot/grub2/grub.cfg引导文件,跟第一种方式修改时一样,这里不作过多详述,我们可以执行“lsblk-f”来查看它的UUID。
修改完后如下图所示:
然后关机修改回启动项,开机就可以正常登陆进去。
二、系统迁移到新盘这里使用的是KVM,所以首先创建一个裸盘,如果用VMwareWorkstation可以直接添加,接着把它添加到虚拟机上,并修改启动项为LiveCD启动。
接着我们按照上面的第二种方法的步骤进入到bash模式。
然后我们查看需要迁移盘的分区
然后我们在裸盘上创建相应的分区,和/dev/vda分区相同,并格式化:
mkfs.xfs/dev/vdb1mkswap/dev/vdb2mkfs.xfs/dev/vdb3接着我们把/dev/vdb3挂载到/mnt目录下,使用rsync来备份旧盘的数据到新盘。
mount/dev/vdb3/mntrsync-avxHAX--exclude=/mnt//mnt#把vda3下的数据备份到vdb3下mount/dev/vdb1/mnt/bootcp-r/boot/*/mnt/boot#备份vda1下boot目录到vdb1下的boot目录迁移过去后,我们接着还需要修改/mnt/etc/fstab的挂载分区UUID以及/mnt/boot/grub2/grub.cfg文件里一些分区UUID参数。
接着执行引导安装在/dev/vdb新盘。
grub2-install/dev/vdb出现下面字样代表安装成功。
接着退出关机修改启动项,并把刚刚迁移到的新盘设为启动盘,如果是VMware,可以使用固件启动直接切换。
然后启动虚拟机,就可以正常进去了(这里启动时候会在bios自检卡在selinuxtarget一小会后自动重启,然后就能进去了)。
当然,也有其它种方式迁移,dd命令或tar命令也可以,tar打包时并不会打包所有文件,有些文件打包时提示权限不够,而dd是把整个盘克隆过去的,分区的UUID都会一样。