技术分享
Ubuntu系统备份在移动硬盘上恢复系统及问题解决
2018-12-31
最近学习python并在自己电脑上安装了Ubuntu然后废了九牛二虎之力安装了很多包以及配置opencv,dlib等,之后想要不要在移动硬盘上直接备份一份系统一方面避免原系统出了问题,另一方面可以带着移动硬盘说不定也能在别的电脑上使用。遇到了很多问题甚至有一些还没有解决。
从网上查到了Ubuntu系统的备份方法,我使用的是Ubuntu 16.04,而且同时也有win10,也就是说我安装的是双系统,具体的系统备份方法是:
1.打开终端根用户权限:
sudo su
2.输入你的根用户密码后先进入系统根目录:
cd /
3.下面就可以开始备份了,备份的语句可以参考以下:
tar -cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /有关以上语句进行一下解释:
tar 进行备份的程序
c - 新建一个备份文档
v - 可以在屏幕上实时输出信息
p - 保存所有文件文件
z - 采用gzip方式进行压缩
f - 备份文件存放路径
--exclude表示将哪些文件排除在外
备份完成后你的系统备份将会出现在你的系统根目录下,你可以通过cp指令或mv指令在root权限下将它复制或剪切到你觉得安全的地方。
注意到的问题: 这里的备份我更倾向于理解为将系统打包,相当于把我们的Ubuntu系统进行了压缩,我们可以观察一下根目录,其中需要注意的一点是/boot这个文件夹,
由于我安装的是Ubuntu与Windows双系统所以我使用了grub管理我的Ubuntu系统引导,而boot文件夹下就存有这部分引导信息而且也存有本系统的内核。这里要注意的是,
如果你进行备份时只是想用于本台机子而且是不更改分区表的情况下可以完全备份boot文件夹,
但是如果进行备份后想要恢复在不同的分区或者设备,请注意这部分最好不要备份否则后面恢复系统你会发现grub无法正常引导。另外,也不要备份根目录下vmlinuz以及initrd.img文件。
当然,你可以放心的执行上面的备份语句进行备份,但是只要注意是否是在原本的分区进行系统恢复就好了。
下面在一个移动硬盘上进行系统恢复:
1.需要制作一个Ubuntu系统安装U盘
2.重启并从此U盘启动
3.请选择Ubuntu系统试用模式
4.选择安装Ubuntu的那个应用程序并在移动硬盘上进行分区并安装(这里就将安装过程省略了。。。)
请注意:执行第5步前如果你备份了/boot文件夹的话,在执行恢复指令之前务必将你新安装的ubuntu系统的vmlinuz,/etc/fstab,initrd.img
以及/boot文件夹在root权限下用cp指令复制出来到一个安全的地方记住保存位置。
5.将你之前的系统备份通过终端在root权限下复制到你新安装的系统的根目录下,并执行以下语句恢复你的数据
tar -xvpzf /media/ubuntu/[你的新系统根目录所在的分区]/backup.tgz -C /media/ubuntu/[你的新系统根目录所在的分区]/
这里进行一下说明:现在你位于的是usb中的系统,而不管是你的外置设备还是你机子的硬盘对于这个系统来说都是外置存储设备,而Ubuntu系统下外置存储设备都会放在/media目录下的/ubuntu文件夹中,不管你的移动硬盘的每个分区还是电脑硬盘的分区在里面都以一个文件夹的方式显示出来,对于ubuntu的分区来说是以UUID的形式命名的
所以你可能看到的文件夹名字是乱码一样,那其实是这个分区的UUID,而grub也是根据分区的UUID来寻找这个系统。
6.当恢复备份结束后,请将你之前复制出来的/boot文件夹,vmlinuz,initrd.img,/etc/fstab文件复制回他们原来的地方
重启后你会发现你的系统基本恢复为了原来的样子
最后再谈一下我遇到的问题,我一开始是从网上找了各种备份和恢复的文章,备份时没有任何问题,在我解压恢复系统后不只是系统崩溃了而且grub也只能输入命令行执行,
然后就搜索了一下Linux系统的启动流程,发现是系统引导和内核无法找到的问题,一开始想通过grub命令行的Linux指令以及initrd指令去指定内核并启动但是在运行initrd时报了kernel找不到,后来了解到进行ubuntu系统引导的时候其实是用UUID寻找系统目录的,大家可以在/boot/grub文件夹中找到一个grub.cfg文件里面就记录了你的系统分区的一些信息,你会发现里面会根据UUID去寻找你的系统分区,而我之前备份的文件中的grub.cfg记录的是我先前硬盘分区的UUID这也是我进行完系统恢复后系统引导失败的原因。
而且UUID会在你格式化分区时重新给分区分配一个UUID。
第一次写博文很多地方写的不周到但是希望能给你有帮助(主要是为了给自己码字以后用=-=

- 标签:
-
行业资讯