e431装linux系统恢复,Linux系统通用备份恢复方法

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

用电脑多了,难免会出现系统故障的情况,如果不想经常重装系统,特别是开发人员,每次重装系统都是噩梦,因为要安装很多很多软件,配置各种参数、环境变量,这时候备份恢复系统的工作尤为重要。

Win系统的备份用Ghost,各种一键Ghost很成熟,那么Linux系统备份用什么呢?

有人说,也用Ghost,有人说,我直接dd整个硬盘镜像,再或者用CloneZilla再生龙,其实最好用的就是一个Linux的启动镜像,简单,可靠。

用Ghost备份Linux速度慢稳定性差,因为文件系统和Win差异很大,哪怕用分区备份的方式都不可靠,试过几次后我就彻底放弃了

dd命令看似可靠,但速度太慢了,而且局限性很大,如果分区大小不同,如果用来迁移Linux系统或者换了一个大硬盘或者系统换一个分区,都不行。

再生龙CloneZilla功能很强大,本身也是一个U盘或者光盘启动的Linux系统,但配置太复杂了,各种配置选择一堆一堆。

其实,只是备份恢复系统的话,tar命令就可以了,在系统里面如果要备份整个系统是不可能的,自己打包自己听着就不靠谱,这时候就需要一个能从光盘或者U盘启动的Linux,这个Linux的版本最好和需要备份的Linux一致,比如我是32位的Ubuntu 14.04,那最好用32位的Ubuntu 14.04的iso启动镜像启动,选择试用就行了。

a1b1d5369ec529508786165423ae5040.png

系统启动以后,打开Terminal终端

6e410aa13afbc0f2ff60a27b53c90907.png

sudo passwd root

su -

却换到root用户

6ea50affcbc4c4a35de37ced42451451.png

fdisk -l /dev/sda

检查硬盘分区情况,看看要备份的系统状况,这里要备份的是sda1分区

7dd273c0443215e0f119098f7321a1f8.png

mkdir /mnt/sda1

mount /dev/sda1 /mnt/sda1

cd /mnt/sda1

ls

2b055a07bae4568e387e156e716f3065.png

确认挂载的目录是要备份的系统根目录,如果有其他的分区需要挂载到该系统根目录,记得挂载

之后用tar命令打包备份,如果有多个分区最好备份到另一个分区,如果只有一个分区怎么办呢?OK

tar -czvf backup.tar ./ –exclude backup.tar

打包备份当前目录到backup.tar,但要排除backup.tar文件,不然回把这个备份文件一起打包进去,打包的备份文件为当时的文件。总之,又是自己打包自己,所以需要用--exclude排除。

du -sh backup.tar

df -h

b0dbd679381fe89da49106108d34d6d1.png

打包后可以看大小,打包前最好也用df -h看下/mnt/sda1的大小,差不多不太离谱就好。

这时候就可以将备份的backup.tar拷贝走,保存好,可以重启进入硬盘的系统拷贝,也能在这个系统用scp命令拷到别的linux机器,或者插一个U盘拷进去都可以。

备份的这个backup.tar可以用来恢复系统,也可以给其他机器部署这个配置好的Linux系统,这就是Linux的优点,不依赖硬件。

如果要部署到另一台机器,先用启动光盘或者U盘启动系统,如果没有事先分好分区,就用fdisk给目标机器分区,之后用mkfs.ext4命令或者其他格式文件系统的mkfs命令格式化分区,记得mkswap分区,除非你不想用swap分区。

格式化好之后,创建文件夹,然后挂载,比如挂载到/mnt/sda1,如果是恢复系统也可以直接先格式化要恢复的系统分区,因为用rm -rf删除所有目录速度太慢,即使用rsync的方法也不如直接mkfs格式化快。

将backup.tar拷到/mnt/sda1,然后进入这个目录

566129ccc4c1095187573969983464c6.png

tar -zxvf backup.tar

解包,解包完成后看下,有没有少什么目录

9c45451a54c76f090daf332e1e9c96d7.png

这样就完了么?当然没有,还需要修改fstab和grub,不然挂载会有问题

vi etc/fstab

766dca18614dc661f745229a0246f158.png

将fstab分区挂载改成自己所选的分区,如果是用UUID做区分,用blkid看当前硬盘分区的UUID

8c1ece45d077cc4ec881cf416a986507.png

修改完fstab之后,还要修改grub配置文件并重装grub,不然可能会导致系统卡在grub命令界面无法启动。

vi /boot/grub/grub.cfg

10e36292f24e6ad9ea2ef8ec00b4568b.png

注意root后面跟的UUID是不是和刚才blkid看到的启动分区一致,如不一致,用sed替换或者直接将blkid看到UUID复制替换grub.cfg中的UUID

sed -i “s/blkid看到的/grub.cfg中的/g” boot/grub/grub.cfg

vi /boot/grub/grub.cfg

再检查一次,另外如果启动分区不是sda1,还需要调整前面的set和menuentry中的启动选项,hd0,hd1,hd2,hd3对应sda,sdb,sdc,sdd依此类推,msdos1,msdos2,msdos3对应sdx1,sdx2,sdx3依此类推

ab1543aad33ad3e87efa644cbdfd56a7.png

grub配置修改完成后,安装grub到硬盘mbr

grub-install –root-directory=/mnt/sda1 /dev/sda

指定boot根目录路径,安装到/dev/sda表面安装到硬盘sda的mbr,sdx后面不带数字就表明安装到mbr,否则就是安装到分区

833e494a7c472693ccf63dde32c34510.png

注意,如果是用32位系统去安装64位系统的grub会报错,或者grub版本差异太大,安装也会报错,尽量保证系统版本和grub版本的一致性。

如果不一致怎么办?也可以,用chroot进到目标系统,再安装grub

chmod 1777 /mnt/sda1/tmp/

mount -t proc proc /mnt/sda1/proc

mount -o bind /dev /mnt/sda1/dev/

chroot /mnt/sda1 /bin/bash

grub-install /dev/sda

31ed5be8474c090dacbaf46da14f0fda.png

之后退出然后重启即可

ef47d4549dfb2e2c0f53f0a72e8f0a0a.png

f2614099e5a685d8a3fcbb436217177b.png

如果系统无法启动,卡在grub界面比较常见,或者启动后文件系统无法挂载,请用光盘或者U盘启动linux,挂载分区检查fstab和grub.cfg,再重新装grub,问题基本都出在这里。

最后,还是建议最好在机器里面安装双系统,这样可以很方便的互相备份恢复。

这种做法还可以将物理机迁移到虚拟机,也可以将虚拟机迁移到物理机,不过需要注意的是虚拟机增强工具,比如vmware-tools,物理机是不需要的,记得卸载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值