[关闭]
@natsumi 2016-12-24T15:06:13.000000Z 字数 3427 阅读 3039

Ubuntu的备份和迁移

Linux Ubuntu


参考:http://www.cnblogs.com/samael/articles/2033568.html

1. 备份系统

然后进入文件系统的根目录(当然,如果你不想备份整个文件系统,你也可以进入你想要备份的目录,包括远程目录或者移动硬盘上的目录):
$ cd /

下面是我用来备份系统的完整命令:
$ sudo tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --media /

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

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

在备份命令结束时你可能会看到这样一个提示:’tar: Error exit delayed from previous errors’,多数情况下你可以忽略它。

你还可以用Bzip2来压缩文件,Bzip2比gzip的压缩率高,但是速度慢一些。如果压缩率对你来说很重要,那么你应该使用Bzip2,用“j”代替命令中的“z”,并且给档案文件一个正确的扩展名“bz2”。完整的命令如下:
$ tar cvpjf backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys --media /

2. LiveUSB

ubuntu有自带的启动盘制作工具
在dash里面搜usb就找到了----“启动盘创建器”
打开然后插上一个空优盘,选择要用的镜像就可以创建了
创建完成后用优盘启动,本来不想重新装系统,直接将备份的东西“还原”到新的硬盘上,但是新的硬盘跟原来分区不一样。。。
于是还是装了新的ubuntu系统
然后进入新系统完成系统恢复

3. 恢复系统

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

接着上面的例子。切换到root用户,并把文件“backup.tgz”拷贝到分区的根目录下。

在 Linux中有一件很美妙的事情,就是你可以在一个运行的系统中恢复系统,而不需要用boot-cd来专门引导。当然,如果你的系统已经挂掉不能启动了, 你可以用Live CD来启动,效果是一样的。你还可以用一个命令把Linux系统中的所有文件干掉,当然在这里我不打算给出这个命令!

使用下面的命令来恢复系统:
# tar xvpfz backup.tgz -C /

如果你的档案文件是使用Bzip2压缩的,应该用:
# tar xvpfj backup.tar.bz2 -C /

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

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

恢复命令结束时,你的工作还没完成,别忘了重新创建那些在备份时被排除在外的目录:
# mkdir proc
# mkdir lost+found
# mkdir mnt
# mkdir sys
# mkdir media
等等

当你重启电脑,你会发现一切东西恢复到你创建备份时的样子了!
然鹅!!!并没有!!!
还需要用liveusb启动做引导的修复
折腾了半天差点又把这项技能归为玄学。。。
查了很多资料,加上自己琢磨的~大概过程是酱紫

4. 引导修复

sudo fdisk -l查看分区
id为83的一般是linux的系统分区

  1. 设备 启动 Start 末尾 扇区 Size Id 类型
  2. /dev/sda1 * 2048 391167 389120 190M 83 Linux
  3. /dev/sda2 393214 500117503 499724290 238.3G 5 扩展
  4. /dev/sda5 393216 484118527 483725312 230.7G 83 Linux
  5. /dev/sda6 484120576 500117503 15996928 7.6G 82 Linux 交换 / Solaris

可以看出sda5是/分区,sda1是/boot,sda6是swap

  1. $ su -i
  2. # mount /dev/sda5 /mnt
  3. # mount /dev/sda1 /mnt/boot

将sda5和1分别挂载,然后对文件做些修改
在将backup.tar.bz2恢复到硬盘上的过程中,我及时的把新系统的/boot备份了一下。。。于是进入了liveUSB后首先就将新系统的/boot覆盖了backup.tar.bz2中解压出来的/boot
然后/目录下的initrd.img和vmlimuz两个软链接重新链接到/boot的有效地址

  1. initrd.img -> boot/initrd.img-4.4.0-21-generic
  2. vmlinuz -> boot/vmlinuz-4.4.0-21-generic

但是感觉这都不重要
最主要的是这一步
修改/etc/fstab中的/、/boot、swap三个分区的UUID
UUID可以用sudo blkid查看到,注意一定要用root权限,否则肯能看不到swap的UUID

  1. /dev/sda1: UUID="c1f0e162-a30b-48e6-965f-aa0899e6e839" TYPE="ext4" PARTUUID="04990f63-01"
  2. /dev/sda5: UUID="3caf223f-0ca7-4ef1-99f7-155be068bdc5" TYPE="ext4" PARTUUID="04990f63-05"
  3. /dev/sda6: UUID="cce0fdb6-8d57-4a0e-abea-b200595b4e21" TYPE="swap" PARTUUID="04990f63-06"

把正确的UUID粘过去

  1. # /etc/fstab: static file system information.
  2. #
  3. # Use 'blkid' to print the universally unique identifier for a
  4. # device; this may be used with UUID= as a more robust way to name devices
  5. # that works even if disks are added and removed. See fstab(5).
  6. #
  7. # <file system> <mount point> <type> <options> <dump> <pass>
  8. # / was on /dev/sda5 during installation
  9. UUID=3caf223f-0ca7-4ef1-99f7-155be068bdc5 / ext4 errors=remount-ro 0 1
  10. # /boot was on /dev/sda1 during installation
  11. UUID=c1f0e162-a30b-48e6-965f-aa0899e6e839 /boot ext4 defaults 0 2
  12. # swap was on /dev/sda6 during installation
  13. UUID=cce0fdb6-8d57-4a0e-abea-b200595b4e21 none swap sw 0 0

再重启可能就好了~嗯~

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注