简摘

家里的N1一直开着,一直没有使用。想把它用起来,ssh登陆后发现存储已经过半。刚好我还有另一台干净系统的N1,所以就想把这台也还原成刚刷机时候的状态。
我们知道windows很多文件在运行是不允许进行拷贝和覆盖的。但在Linux,不会限制root访问任何东西,你可以把分区上的所有东西都扔到一个TAR文件里去。

备份系统

首先成为root用户:

$ sudo su

进入你想存放备份的目录(因为是备份文件,我就直接到放根目录下,但我不建议你这么做)

# cd /

下面是我用来备份系统的完整命令:

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

简单分析一下这条命令:

  • “tar”是我们备份系统所使用的程序。
  • “cvpfz”是tar的选项,意思是“创建档案文件”、“保持权限”(保留所有东西原来的权限)、“使用gzip来减小文件尺寸”。
  • “backup.gz”是我们将要得到的备份文件的文件名。
  • “--exclude=/backup.tgz ...”是我们排除不要备份的目录。

点击展开详情
“backup.gz”是备份时必须排除在外的目录,否则将会发生神奇的事。
有些目录是无用的,例如“/proc”、“/lost+ found”、“/sys”。
如果不把“/mnt”排 除在外,那么挂载在“/mnt”上的其它分区也会被备份。
另外需要确认一下“/media”上没有挂载任何东西(例如光盘、移动硬盘),如果有挂载东西, 必须把“/media”也排除在外。
有人可能会建议你把“/dev”目录排除在外,但是我认为这样做很不妥,具体原因这里就不讨论了。

  • “/”是我们要备份的目录,在这里是整个文件系统。

补充

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

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

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

你还可以用Bzip2来压缩文件,Bzip2比gzip的压缩率高,但是速度慢一些。如果压缩率对你来说很重要,那么你应该使用Bzip2,用“j”代替命令中的“z”,并且给档案文件一个正确的扩展名“bz2”。完整的命令如下:

# tar cvpjf backup.tar.bz2 --exclude=/backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys /

恢复系统

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

接着上面的例子。切换到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
最后修改:2020 年 05 月 21 日 09 : 35 PM
赏口饭吃,行行好吧,客官!