ubuntu 系统备份和还原策略
现在我慢慢把我的工作环境迁移到了Linux系统,以前ubuntu用的还不是很多,系统坏了就重装呗,反正装个ubuntu一个小时都不要,但是现在基本上都在用ubuntu,系统里面有一些软件环境配置,还有像vim等自己的配置文件等等,所以现在系统坏了选择重装系统真的太糟糕了,所有的环境要重新搭建,那就不是一两个小时的事情了。
所以现在就养成一个定期做系统备份的好习惯,以防万一。我现在分享的系统备份和还原策略绝对不是最好的,但是基本可以满足需求。绝对不会出现还要重装系统的情况,今天把我/根目录和/home目录两个分区所有文件都删了,还是被我还原回来了,当然我提前是做了系统备份的,所以绝对保证可用。
系统备份
linux一切皆文件,系统备份就相当于把整个/目录所有文件打包压缩保存
备份前先切换为root用户,避免一些权限问题,然后切换到/根目录。
tar -cvpzf /media/wulian/hayifeng_Disk/ubuntu_backup@`date +%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot --exclude=/home --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/run /注意:这个部分一定务必千万要根据自己的实际情况灵活使用,所以我要详细讲一下上面这条命令。
tar就是一个打包命令,没什么好说的,主要谈谈它的参数。
- /media/wulian/hayifeng_Disk/ubuntu_backup@
date +%Y-%m+%d.tar.gz:
这个是备份文档的存放路径,我的移动硬盘名字叫hayifeng_Disk,挂载在/media/wulian目录下,ubuntu_backup@date +%Y-%m+%d.tar.gz是我备份文件的名字,这里用了一个shell命令date +%Y-%m+%d用于获取当前时间,因为备份嘛,注明时间戳还是有必要的,然后.tar.gz是说明这个文件是用tar进行打包,gzip进行压缩的。所以要根据你自己情况换为你自己的备份文件目录和文件名。
- -c :新建一个备份文档
- -v :显示详细信息
- -p:保存权限,并应用到所有文件
- -z :用gzip压缩备份文档,减小空间
- -f :指定备份文件路径
- --exclude :排除指定目录,不进行备份
注: 前面5个参数没什么说的,都加上,主要是--exclude参数,我要谈谈哪些目录我没备份,以及我为什么不备份,特别是/home和/boot这两个目录。
- 我安装ubuntu系统的时候,一共分了四个分区:/、/home、/boot、swap。
我非常建议系统备份的时候按照分区进行分别备份,并且我也不太建议安装系统的时候只给系统分一个分区。有四个分区的好处是,一般系统坏了都是/分区的问题,/home没什么关系,所以这种情况,我可以只还原/分区,其他分区完全可以不用动,系统就可以恢复,会节省很多时间。
- 另外,为了保险起见,我也可以对/home和/boot备份,但是备份频率完全没必要和/分区一样高。比如/分区我每周备份一次,那/home和/boot完全可以一个月备份一次,因为这两个分区出问题的概率真的很小,而且变动也不会太频繁。
- 请注意,如果你没有把/home或者/boot目录单独分一个区,一定不要加
--exclude=/home或--exclude=/boot参数!!!
- /proc:一个虚拟文件系统,系统运行的每一个进程都会自动在这个目录下面创建一个进程目录。既然是系统自动创建,也就没必要备份的必要了。
- /tmp:一个临时文件夹,系统的一些临时文件会放在这里。
- /lost+found:系统发生错误时(比如非法关机),可以在这里找回一些丢失文件。
- /media:多媒体挂载点,像u盘、移动硬盘、windons分区等都会自动挂载到这个目录下。
- /mnt:临时挂载点,你可以自己挂载一些文件系统到这里。
- /run:系统从启动以来产生的一些信息文件
- /home:用户家目录,存放用户个人文件和应用程序。
- /boot:和系统启动相关的文件,像grub相关文件都放在这里,这个目录很重要!
我再次强调一次,/home和/boot目录我实际也是做了备份的,备份命令和上面差不多,当然你也可以排除一些目录不进行备份,像我/home下面的虚拟机文件,太占空间了。
tar -cvpzf /media/wulian/hayifeng_Disk/ubuntu_home_backup@`date +%Y-%m-%d`.tar.gz /home
tar -cvpzf /media/wulian/hayifeng_Disk/ubuntu_boot_backup@`date +%Y-%m-%d`.tar.gz /boot最后还要提一下就是,有可能备份到最后系统会提示"tar: 由于前次错误,将以上次的错误状态退出",这个警告可以忽略,没什么影响的。
系统还原
系统备份的意义就在于系统哪天发生意外时可以系统还原拯救回来。
这里有两种还原方式,如果你系统出问题了,但是还可以进入终端,那就可以直接解压备份文件进行还原。但是如果你连系统都不能登录了,就要使用LiveCD(U盘启动盘)进行还原了。
1、直接操作
操作前还是先切换到root,并切换到/根目录。
tar -xvpzf /media/wulian/hayifeng_Disk/ubuntu_boot_backup@2016-6-6.tar.gz -C /2、LiveCD
操作之前请确保你已经有一个制作好的ubuntu U盘启动盘。
进入系统后,打开终端还是先切换到root。
mkdir /mnt/sys
mount /dev/sdaX /mnt/sys
tar -xvpzf /media/hayifeng_Disk/ubuntu_boot_backup@2016-6-6.tar.gz -C /mnt/sys注意先创建一个临时目录用于挂载你的/根目录分区,sdaX代表你的/根目录分区,如果不知道就用fdisk -l查看一下,另外如果你的移动硬盘没有被自动挂载,你也需要手动创建一个临时目录进行挂载。
注意!!!因为 tar还原是只会覆盖相同的文件,但是这种方法只是恢复备份时的文件,就是说如果某些文件丢失或损坏了,这样可以恢复修复这些文件,但不能删除自备份到恢复前这期间所生成的其它文件,说白了就是假如你备份系统时有1234这四个文件,如果三天后,由于某些原因变成了1234'5(4改变了),你恢复后,就会变成12345,其中4'恢复成备份时的文件,5保留。所以大家要是想彻底还原成备份时候的样子最好彻底删除根目录下的所有文件,然后再还原,这样就可以还原成备份时的样子了。 删除整个文件系统,比如运行命令
rm -fr /*,那么你还原系统后一定要把你之前没有备份的目录手动创建,不然重启系统是有问题的。
mkdir proc tmp lost+found media mnt run