Linux系统的备份、恢复与迁移

整系统的备份,应该很多人会想起Ghost,其实开源界有其相应的实现,比如CloneZillaPartimage,或者原始点的dd,对备份Linux来说,这些Linux原生的工具显然要比需要DOS/WinPE环境的Ghost要更加“原汁原味”,而且开源版的工具功能一点也不少,一样可以网络传输等,而且支持多种格式(或者说格式无关,dd),不过本文关注的,是一个更加原始的方法,tar。

tar的历史都好几十年了,它的用法没有改变,而且相信未来很几十年内都不会变,而且作为一个日常常用的压缩解压工具,很多人都可以对它自如控制。其实,tar是很好的系统备份/迁移工具,它抽象于文件系统,不管是从ext迁移到reiserfs,从普通文件系统到LVM,还是到RAID,比起上述的那些影像工具,tar可以说是最胜任的迁移工具。

其实Ubuntu的社区文档BackupYourSystem/TAR有详细的解析和介绍,我在这里抄录一些重点,不做过多解释,看命令:

创建备份:

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

恢复备份:

tar -xvpzf /home/test/backup.tar.gz -C /

通过网络接收备份并恢复:

nc -l -p 1024 | tar -xvpjf - -C /mnt/disk

或者:(这个就不用nc了,也就不需要下面那行,但是要开sshd)

ssh user@host cat backfile.tar.gz |tar -xvpzf - -C /mnt/disk

通过网络发送备份:

cat backup.tar.gz | nc -q 0 192.168.1.x 1024

通过网络发送备份成文件等,按需自由配置。
【这里用的nc是netcat工具,提供稳定的后台网络连接;另外archlinux下默认安装的gnu-netcat不支持-q参数,意为管道传输完后退出,一般在发送方配置,如果省了,可以人工Ctrl+C结束之】

PT的喃喃自语:
看到netcat这个工具在这里应用,我第一感觉是,惊艳,太惊艳了,虽然玩Linux两年来惊艳的感觉时有体会。马上想起的是不久前读的《开源世界旅行手册》。其中一章节,无根的根:无名师的 Unix 心传(Rootless Root:The Unix Koans of Master Foo)原来是《Unix编程艺术》一书的附录,中文翻译颇像一些类似经文之类的口吻(就是翻译后略显艰涩了,我找来英文版对着才看懂),内容很有趣。其中“无名师与万行码”就说到shell跟C,哪个更“Unix-nature”,netcat就是很好的例子,功能很简单,就是提供网络连接,但至于要传输什么,是系统备份的压缩数据,是个配置文件,是ffmpeg编码出来摄像头的视频信息……经过了内核的管道,bang!,多神奇的功能就这么组合起来轻松实现了,这就是Unix-nature,注重于任务的快速、高效、简洁地完成,而不是写了多少行代码。

文章分类 Shell, Unix/Linux 标签: , , , , , ,
4 comments on “Linux系统的备份、恢复与迁移
  1. vzomik说道:

    不错,简单明了,一看就懂了。

  2. speedup2010说道:

    nc -l -p 1024 | tar -xvpjf – -C /mnt/disk

    这里有点不明白,为什么’-C’前面还有一个 ‘-‘

  3. BOYPT说道:

    @speedup2010: 因为tar给出了f参数,就一定要从文件读取,“-” 在终端里面代表了标准输出输入的文件。其实可以省略f参数,那样就不用”-“了。

  4. Jak Wings说道:

    不错,nc果然是个好工具!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*