Linux系统备份与还原

1. 整盘备份与还原

1.1. 记住几个这里要经常用到操作

* 查看存储设备(硬盘、U盘、磁盘分区)的使用情况:`df -h`
* 要查看存储设备的内容: 挂载位置通常在/mnt/, 用ls命令即可查看
* 要查看有几个存储设备:`ls /dev/`,看看里面有多少U盘(sda,sdb,sdc),硬盘(hda,hdb,hdc)

1.2. 整盘克隆的方法

dd命令,是Linux下自带的磁盘备份工具。可以备份还原,整个磁盘,或磁盘的某个分区。类似的工具还有Gnome Disk UtilityClonezilla.

这种方法,速度比较慢,占用的空间大。因为空白数据,也要复制。用gzip等工具压缩一下,存储数据会大大减小,但是克隆、还原的数据并不会减少。

  • 如果要直接克隆当前系统的硬盘到USB(我当前的系统也是跑在usb上的,就是sda)。这样该USB里就跟该系统一样了
    dd if=/dev/sda of=/dev/sdc
  • 如果要制作当前系统整个盘的镜像。这种方法得到的文件是压缩包,空白部分只保存标记。解压出来是.img文件,就很大了,原盘有多大,它就多大。比如一个32GB的硬盘,里面内容只有700M,这种方法得到的img文件就有32G。
    dd if=/dev/sda |gzip > /mnt/sdc1/disk.img.gz
  • 如果要根据整盘的镜像装系统。 假设要撞到sdc(sdc1,sdc2只是它的分区)这个u盘中
    gzip -dc /mnt/sdc1/disk.img.gz |dd of=/dev/sdc

2. [推荐]非整盘克隆的方法

参考帖子:Linux系统备份与还原,下面内容,差不多算搬运工了(删掉了Bzip2这种方式)

2.1. 备份系统

按照参考贴中备份系统的命令,在openwrt中,亲测不能成功,--exclude会失效。因为tar: Removing leading '//’ from member names问题(tar默认是当前路径,当前路径的话/proc之类的当然不能生效了)

所以,我将路径改为相对路径,就成功了。命令如下

cd /
tar cvpzf backup.tgz --exclude=./proc --exclude=./lost+found --exclude=backup.tgz --exclude=./mnt --exclude=./sys --exclude=./media ./

解析:

  • tar:当然就是我们备份系统所使用的程序了。
  • cvpfz:是tar的选项,意思是“创建档案文件”、“保持权限”(保留所有东西原来的权限)、“使用gzip来减小文件尺寸”。
  • backup.gz:是我们将要得到的档案文件的文件名。
  • /: 是我们要备份的目录,在这里是整个文件系统。
  • 需要排除一些没有用的资源:
    • backup.tgz: 它自己。不排除,那不就死循环了嘛
    • 没用的 /proc/lost+ found/sys
    • /mnt,/media: 这两个必须排除,否则里面挂载的存储设备(光盘、移动硬盘、U盘)的内容,都会被复制
  • 有人可能会建议你把“/dev”目录排除在外。但是该作者不建议

还可以用Bzip2来压缩文件,比上述方法中的gzip压缩率高,但是速度会慢一些。如果感兴趣,可参考上面提到的参考贴

执行备份命令之前请再确认一下你所键入的命令是不是你想要的。执行备份命令可能需要一段不短的时间。

备份完成后,在文件系统的根目录将生成一个名为“backup.tgz”的文件,它的尺寸有可能非常大。现在你可以把它烧录到DVD上或者放到你认为安全的地方去。

tar还可以做增量备份,若感兴趣,请参考Tar命令备份还原Linux系统

2.2. 还原系统

在进行恢复系统的操作时一定要小心!如果你不清楚自己在做什么,那么你有可能把重要的数据弄丢,请务必小心!

在 Linux中有一件很美妙的事情,就是你可以在一个运行的系统中恢复系统,而不需要用boot-cd来专门引导。当然,如果你的系统已经挂掉不能启动了, 你可以用Live CD来启动,效果是一样的。

恢复系统的命令:
tar xvpfz backup.tgz -C /

注意:上面的命令会用档案文件中的文件覆盖分区上的所有文件。

执行恢复命令之前请再确认一下你所键入的命令是不是你想要的,执行恢复命令可能需要一段不短的时间。

恢复命令结束时,你的工作还没完成,别忘了重新创建那些在备份时被排除在外的目录:

mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys

当你重启电脑,你会发现一切东西恢复到你创建备份时的样子了!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐