Linux系统备份与系统迁移新盘

目录

一、系统备份

二、系统迁移到新盘


一、系统备份

这里我备份的是CentOS7系统,实验是在kvm上进行,也可以用vmware模拟,这样更便捷一点。
1、首先我们给需要备份的机增添一块硬盘,并格式化好用来存放打包文件:

2、然后切换root用户来进行对第二块盘的挂载,挂载到/mnt目录:

mount /dev/vdb1 /mnt

3、接着我们执行“cd /mnt”进入挂载目录,对整个文件系统进行打包:

#这里有两种压缩打包方式:

tar cvpzf backup.tgz --exclude=/proc --exclude=/mnt --exclude=/sys /

tar cvpjf backup.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来专门引导。当然,如果你的系统已经挂掉不能启动了,你可以用Live CD来启动,效果是一样的。

第一种恢复是进入运行系统中解压恢复:

开机进入后可以看到第二块盘,我们把它挂载到“ /mnt ”目录,然后查看一下 /boot/grub2/grub.cfg 文件,记下它的部分参数,以及查看“ / ”的安全上下文,如下:

  

然后我们开始解压到根目录,解压的文件会覆盖分区上的所有文件。

tar xvpfz backup.tgz -C /

#如果是使用Bzip2压缩的,应该用:

tar xvpfj backup.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.break enforcing=0

之后我们进入到下图的界面,执行“ exit ”退出继续启动。

接着就可输入账号密码成功登陆了

此时的selinux是宽恕状态(Permissive),我们执行以下命令来修改目录以及目录下文件的selinux标签(安全上下文)回到原本的模样。

restorecon -Rv /

它会进行一个递归的重打标签操作,重打标签会根据selinux数据库打

selinux政策文件在/etc/selinux/targeted/contexts/files/file_contexts

第二种是用Live CD来启动进入修复模式,挂载目录解压恢复系统

首先把有备份系统的盘查到另一台机,修改启动为镜像启动

启动机器后,我们安装如下步骤进入到我们的修复模式。 

切换到bash后,我们挂载备份盘/dev/vdb1,接着把压缩的备份系统解压到“ / ”目录,覆盖根目录下的文件。

 解压完成后,我们查看一下文件属性:

ls -Z /

发现它的selinux标签(安全上下文)都没有改变,保留了原来的文件属性,相较于第一种方式我们不用再修复selinux标签。

接着我们修改它的/etc/fstab文件和/boot/grub2/grub.cfg引导文件,跟第一种方式修改时一样,这里不作过多详述,我们可以执行“ lsblk -f ”来查看它的UUID。

 修改完后如下图所示:

然后关机修改回启动项,开机就可以正常登陆进去。

二、系统迁移到新盘

这里使用的是KVM,所以首先创建一个裸盘,如果用VMware Workstation可以直接添加,接着把它添加到虚拟机上,并修改启动项为Live CD启动。

接着我们按照上面的第二种方法的步骤进入到bash模式。

然后我们查看需要迁移盘的分区

然后我们在裸盘上创建相应的分区,和/dev/vda分区相同,并格式化:

mkfs.xfs /dev/vdb1
mkswap /dev/vdb2
mkfs.xfs /dev/vdb3

接着我们把/dev/vdb3挂载到/mnt目录下,使用rsync来备份旧盘的数据到新盘。

mount /dev/vdb3 /mnt
rsync -avxHAX --exclude=/mnt / /mnt       #把vda3下的数据备份到vdb3下
mount /dev/vdb1 /mnt/boot   
cp -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自检卡在selinux target一小会后自动重启,然后就能进去了)。

当然,也有其它种方式迁移,dd命令或tar命令也可以,tar打包时并不会打包所有文件,有些文件打包时提示权限不够,而dd是把整个盘克隆过去的,分区的UUID都会一样。

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值