Total Pageviews

Friday 8 July 2016

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,注重于任务的快速、高效、简洁地完成,而不是写了多少行代码.