前言:网上的教程很多都不够详细,对初学者而言配置环境不易,因此系统的备份与还原真心很重要!!这几天折腾了很多方案,用tar备份还原的优点是没有什么限制,就是耗时久一点点,它可以完全帮你还原一个一模一样的备份节点,但是备份还原过程比较艰辛,一定要谨慎跟着教程走,才有可能保证你一次性成功,否则那就多撸几次,就当熟悉一下ubuntu系统结构吧!!!
·····················································
本文所使用资源(待补充,适用任何Ubuntu系统)
·····················································
1、ubuntu系统安装教程
参考链接:https://jingyan.baidu.com/article/3c48dd348bc005e10be358eb.html
可能会遇到的问题及注意事项(安装前一定要看!!!):
1.1、Ubuntu16.04.4LTS的系统启动盘制作
(需要注意写入硬盘映像之前)
1、格式化
2、写入方式:USB-ZIP+ 便捷启动:写入新的硬盘主引导记录(MBR)USB-ZIP+
(或写入方式:USB-HDD+便捷启动:写入新的硬盘主引导记录(MBR)-USB-HDD+)
1.2、关于分区大小设置问题
一般建议创建4个基础分区,包括主分区(/),home分区(/home),交换空间(swap),以及boot分区(boot)
以固态硬盘120GB空间为例:
主分区(/)建议至少分40GB,因为很多程序需要安装在这里,例如一个matlab就10GB+了(当然你也选择安装在其他盘),不过,切记主分区一定要越大越好,否则空间不够那就很麻烦了!!!后期实在不够可以考虑文件夹映射(参考链接:https://forum.ubuntu.com.cn/viewtopic.php?f=86&t=80493)
交换空间(swap)建议2GB。一般类似于“虚拟内存”,具体解释是:“当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。”(参考链接:https://www.jb51.net/article/133492.htm)
boot分区(boot)存放启动引导文件,一般建议给1GB ~ 2GB吧(硬盘充裕情况下,不充裕的话给200MB也足够了),但有时候因为内核升级又没有删掉原有的启动文件可能会超过512MB。所以现在有种说法就是不要再独立分‘boot'了,如果是Ubuntu默认安装模式,只有两个分区,即主分区(/)和home分区(/home)。
home分区(/home)建议剩余的空间都给home,至少40GB以上吧,这个分区是你数据、代码、媒体文件等存放的,就好比win下除了C盘之外的其他盘,当然有条件我建议自己再外挂一个1TB的机械硬盘,然后映射到/home目录下用于存放大型数据,这才是根本解决办法。(参考链接:https://blog.csdn.net/stoic163/article/details/79401739)
1.3、安装完成重启后黑屏,左上角光标闪烁
这是因为安装过程中启动引导失败的原因,需要重新挂载一下安装了启动引导文件的硬盘到‘/mnt’即可,具体做法如下:
1.3.1、同样通过U盘启动,这次选择‘Try Ubuntu’,进入界面后启动终端 ‘Ctrl + Alt + T’
1.3.2、进入root,首先要给root设置密码
sudo passwd root #连续输入两次密码(例如) 123456 123456
#进入root su #按提示输入刚才的密码 123456 #定位到根目录下 cd /
1.3.3、手动挂在启动引导文件所在硬盘
fdisk -l //找到你的Ubuntu安装分区(boot),以下假设为/dev/sda3 sudo mount /dev/sda3 /mnt sudo grub-install --boot-directory=/mnt/ dev/sda //注意dev前面有空格,如果是sda3就填sda,如果是sdb3就填sdb
1.3.4、重启系统,从安装了boot的硬盘启动
reboot
1. 4、电脑启动进入grub rescue mode的解决方案
(请遵循链接的 方案二 和 附加情况 解决)
https://blog.csdn.net/u010896929/article/details/52958637
2、ubuntu系统备份教程
参考链接:https://blog.csdn.net/stack_moon/article/details/80931544
备份原理就是将系统文件压缩打包。由于Linux系统所有都是文件,故,只需要将系统打包即可。当然,必须除了当前系统运行中的文件以及临时文件。
打包有两种方式:a),直接需要打包的Linux系统下压缩打包(亲测,发现在打包最后会报错,不知会不会有问题)。b). 使用Live USB,其实就是刚刚用U盘做的系统镜像。
这里推荐方式b:
2.1.在要备份的系统的电脑上,新插入刚刚安装了Ubuntu系统的硬盘,用来存储备份压缩包以及还原。
2.2.使用U盘启动,进入Live USB界面,点击试用。
2.3.进入试用Ubuntu后,先获取root权限。(参照1中问题3详细步骤)
sudo passwd
su root
2.4.挂载需要备份的系统硬盘.可以使用 fdisk -l (在root权限下)查看硬盘号,确认那些是需要备份的系统硬盘符,哪个是备份目标硬盘。
这里我们以4个基础分区的备份为例,即 主分区(/),home分区(/home),交换空间(swap),以及boot分区(boot);
一般主分区(/)备份频率较高;home分区(/home)以及boot分区(boot)备份频率低;而交换空间(swap)不用备份。
2.4.1 在根目录下新建上述待备份分区的挂载点文件夹,例如:root_backup、home_backup、boot_backup; 以及存储备份文件的目标硬盘挂载点文件夹: restore 。
mkdir root_backup home_backup boot_backup restore
2.4.2 把相应的硬盘(盘符, 用 fdisk -l 查看)挂在到上述文件夹上
mount dev/sda7 /root_backup/
mount dev/sda8 /home_backup/
mount dev/sda6 /boot_backup/
mount dev/sdb5 /restore/
#注意:sda1,sdb1按照fdisk -l查看的的实际情况替换。
可以进入backup文件夹下查看是否挂载成功。如果挂载成功,文件夹下应该是要备份的Linux系统文件。
2.4.3 开始压缩系统文件。
压缩格式有很多,如果你的硬盘够大,建议使用低压缩格式,这样速度会很快。
压缩备份命令(路劲按照自己的实际情况替换,如果你是按照我的步骤做的,直接替换即可):
进入到 ***_backup 备份系统目录下进行压缩:
#备份主分区(/)
#首先进入 root_backup 文件夹
cd /root_backup/
#然后打包压缩(压缩为root_backup.tgz)
tar cvpzf /restore/root_backup.tgz --exclude=./proc --exclude=./lost+found --exclude=./mnt --exclude=./sys --exclude=media ./
#备份home分区(/home)
cd /home_backup/
tar cvpzf /restore/home_backup.tgz ./
#备份boot分区(/boot)
cd /boot_backup/
tar cvpzf /restore/boot_backup.tgz ./
解释:
--exclude ,是排除压缩的文件。就是将不需要的文件排除。
等待压缩完成。
2.4.4 重点!!!备份原始系统的配置文件,以及新安装系统的启动文件。
进入backup原始系统下,备份系统配置文件fstab fstab.d
cd /root_backup/etc/
cp -pdr fstab fstab.d /restore/ #可能没有 fstab.d
3、ubuntu系统还原或迁移(到另外一台电脑)教程
3.1 Ubuntu系统的还原(在原来的系统硬盘上恢复备份)
假如你在因为误操作,导致系统崩溃了,请用当前方案!
同样建议进入,使用U盘启动,进入Live USB界面,点击试用下进行操作!
当然下面是进行整个系统的恢复,如果你清楚自己系统是主分区(/)崩了,那可以只进行主分区恢复,其他也一样。
#这种方案仅适合原系统蹦了,但是硬盘没变的情况下使
#设置root权限密码
sudo passwd
123456
123456
#进入root su 123456
#定位到根目录下
cd /
#新建待恢复文件夹挂载点(主分区 -> root_recovery、boot分区 -> boot_recovery、 home分区 -> home_recovery)、备份资料所在硬盘挂载点 -> store
mkdir root_recovery boot_recovery home_recovery store
#分别挂载相应的盘符(根据fdisk -l查看的的实际情况替换,详细请参考前面教程 2.4.1~2.4.2)
mount dev/sda7 /root_recovery/
mount dev/sda8 /home_recovery/
mount dev/sda6 /boot_recovery/
mount dev/sdb5 /store/
#分别解压恢复
#恢复主分区
tar -xvpzf /store/root_backup.tgz -C /root_recovery/
#如果你想彻底一点,建议首先把原来主分区(/)下面的文件全部删除在做恢复,这就注意新建一下文件夹,因为备份时候忽略了,但新系统下必须有:
mkdir proc tmp lost+found media mnt run
#恢复 home分区
tar -xvpzf /store/home_backup.tgz -C /home_recovery/
#恢复 boot分区
tar -xvpzf /store/boot_backup.tgz -C /boot_recovery/
#然后重启搞定
reboot
3.2 Ubuntu系统的迁移(在另一台新计算机硬盘上恢复上面备份)
#适合把备份系统迁移到新硬盘上
首先按照教程1中链接把系统在新硬盘上安装完整
然后老套路了,使用U盘启动,进入Live USB界面,点击试用!
#设置root权限密码 sudo passwd 123456 123456 #进入root su 123456 #定位到根目录下 cd /
#设置备份资料所在硬盘挂载点 -> store
mkdir store
#挂载相应的盘符(根据fdisk -l查看的的实际情况替换,详细请参考前面教程 2.4.1~2.4.2)
mount dev/sdb5 /store/
#然后就不能采用3.1中的方法给新硬盘设置挂载点了,因为设置了挂载点后,boot分区就变成了当前试用Ubuntu下面的一个挂载路径,完成回复后重启时不能顺利进入系统!!
#因此下面的恢复工作需要直接使用新硬盘的盘符 UUID 号
#查看新硬盘各分区的 UUID 号
sudo blkid
#主分区 /dev/sda1: UUID="04df69c9-2b43-4df9-bd9e-31abf767f654" TYPE="ext4" PARTUUID="e07a80e4-01" # boot分区 /dev/sda5: UUID="6bc18e92-8bfd-48b7-9ced-b438be714e3f" TYPE="ext4" PTTYPE="dos" PARTUUID="e07a80e4-05" # home分区 /dev/sda6: UUID="017cdfea-eb23-41e0-845e-6e7bfad7aa72" TYPE="ext4" PARTUUID="e07a80e4-06" # 其他数据盘 /dev/sdb2: LABEL="M-gM-3M-;M-gM-;M-^_" UUID="0003329A000E85C8" TYPE="ntfs" PARTUUID="ad41c497-02" #系统备份盘 /dev/sdb5: UUID="de8163c3-cc1c-48b9-833d-de4c5cd72431" TYPE="ext4" PARTUUID="ad41c497-05"
我们要重点记住的是 主分区(/),home分区(/home)以及boot分区(boot)的 UUID
#然后重点来了!!千万别打瞌睡跳过了
由于是新硬盘,所有分区的UUID已经改变了,就不能像3.1那样直接解压恢复,在恢复之前首先需要对新硬盘下的某些文件进行备份,后面要替换UUID!
# 在store中新建文件夹 new_recovery 用于存放新硬盘中复制过来的文件
cd /store
mkdir new_reovery
# 进入新硬盘的boot分区,备份系统启动文件grub.cfg.主要是用来获取新硬盘的UUID号,替换备份系统的内的UUID,不然在新硬盘上系统无法启动!
cd /media/ubuntu/6bc18e92-8bfd-48b7-9ced-b438be714e3f/grub/
cp -pdr grub.cfg /store/new_recovery/
#进入新硬盘主分区(/),备份系统配置文件 fstab fstab.d(可能没有)
cp -pdr /media/ubuntu//04df69c9-2b43-4df9-bd9e-31abf767f654/etc/fstab /store/new_recovery/
#开始解压恢复
#返回根目录
cd /
#恢复主分区
tar -xvpzf /store/root_backup.tgz -C /media/ubuntu/04df69c9-2b43-4df9-bd9e-31abf767f654/
#恢复 home分区
tar -xvpzf /store/home_backup.tgz -C /media/ubuntu/6bc18e92-8bfd-48b7-9ced-b438be714e3f/
#恢复 boot分区
tar -xvpzf /store/boot_backup.tgz -C /media/ubuntu/6bc18e92-8bfd-48b7-9ced-b438be714e3f/
#修改UUID
#首先针对 fstab 根据你新硬盘分区情况 与 备份系统的 fstab 对比进行修改。
有两种情况;
1、新硬盘分区数量与备份系统一致,只需要修改 fstab 文件中每个分区对应的盘符号
2、新硬盘分区数量与备份的不一致或者新硬盘还挂载了更多硬盘,那就把其他盘符都保留下来。
主要打开两个 fstab文件进行对比修改即可
# 打开新硬盘的(刚才备份的)fstab文件
sudo gedit /store/new_recovery/fstab
# 打开恢复到新硬盘主分区(/)中的(属于备份系统的)fstab文件
sudo gedit /04df69c9-2b43-4df9-bd9e-31abf767f654/etc/fstab
注意:把前者对应分区的 UUID 替换到后者中
修改grup.cfg文件中的 UUID
也是打开两个 grup.cfg 文件对比修改即可!
#打开新硬盘(刚才备份的)grup.cfg 文件
sudo gedit /store/new_recovery/grup.cfg
# 打开恢复到新硬盘boot分区中的(属于备份系统的) grup.cfg 文件
sudo gedit /6bc18e92-8bfd-48b7-9ced-b438be714e3f/grup/grup.cfg
一定要对照着上面的文件修改到下面文件中去,否则出错启动不了!!
一般只需要修改主分区(/)、boot分区的 UUID,需要把整个文档所有 UUID都替换完成!
(这里主要参考了连接 https://blog.csdn.net/stack_moon/article/details/80931544)
4、 必须了解的Ubuntu系统基本知识
Ubuntu根目录下各文件的功能介绍 https://blog.csdn.net/liajie/article/details/78616200
未完待续~~~