linux系统备份虽然在平时不经常使用,但是网络管理员会经常遇到linux系统的恢复问题,由于linux系统是处于命令符的操作界面所用在系统的恢复起来的时候比较繁琐。
linux系统备份一直是从windows转到linux的用户关心的问题。由于众所周知的原因,有经验的windows用户都养成了用 ghost等软件备份windows系统的“优良传统”,结果这个优良传统也被移植到了linux下。其实ghost用来备份linux也是很不错的,它 的压缩功能能够省下不少的硬盘空间,这点对于硬盘紧张的用户来说的确是相当好用的。不过它也有自己的缺点,那就是必须在DOS下使用,如果只是想要解出某 部分文件,就只能用windows版的ghost解压出来……,种种因素使得用ghost用来备份linux成为了一件痛苦的事情。
实际上,linux系统备份自带的tar和afio就可以很好的完成这个工作,而且使用起来也相当方便,最明显的一点就是,不用为了备份系统而重启计算机。好,言归正传。
[size=18]1、使用tar进行简单的备份和恢复[/size]
1.备份
tat命令能够将存档数据写到文件、磁带或者原始磁带设备之中。tar命令的典型语法如下所示:
tar -[ c | x | t ] [ -pv ] -f device path1 path2 ...
tar需要带一个参数命令,通常c表示创建(create),x表示解压所(extract),t表示测试(test)。选项p指示tar在解 压缩时保留原始文件的所有权和权限。选项v指示tar列出详细操作过程。f选项以及后面的参数指定tar写到给定的设备。所有path1,path2等等 参数是要添加到存档中的目录树或者文件。
例如,要将/usr目录树写到$HOME/Backup/usrbak.tar中,可以使用如下命令:
tar -cf $HOME/Backup/usrbak.tar /usr
如果想要将/usr目录树写到/dev/st0的磁带设备中,可以使用如下命令:
tar -cf /dev/st0 /usr
现在聪明的网友应该已经想到了,想要备份整个linux的系统备份文件系统的命令是这样:
tar -cf /dev/st0 /
乍看起来的确是这样的,但是,这个命令却实现不了你的意图。首先,这个命令也会备份/proc目录。根据你的内核版本,它将在你的备份中增加数百兆你不需要的内核运行期数据,甚至会引起tar中断或者分段错误(segmentation fault)。
其次,备份根目录/也会备份/mnt目录,其中会包含装载的CD-ROM数据以及任何装载的网络文件系统甚至于装载的windows分区(这是好事,也可能是坏事,取决于你要做什么)。
要备份除了/proc和/mnt之外的根目录,使用下面的命令:
tar -cf /dev/st0 $(ls / | grep -v -e proc -e mnt)
这个命令将备份除了/proc和/mnt之外的根目录。
2.恢复
创建了一个tar存档文件之后,通常要将每个文件名前面的斜线“/”删除掉。这意味着当恢复文件时,它们将被恢复到tar运行的相对工作目录中去。例如,要将/dev/st0中的磁带恢复到它们的原始路径中,使用下列命令:
cd /: tar -xpf /dev/st0
在恢复过程中可以指定附加的路径。这些路径表示列表中的文件被打包后恢复的路径。允许使用通配符。例如要将/dev/st0磁带中的/usr/X11R6和/usr/local目录树恢复到它们的原始路径,命令如下:
cd /;tar -xpf /dev/st0 'usr/X11r6' 'usr/local/*' | tee /var/log/restored.files
有关使用tar进行更加复杂操作的信息,例如多卷,增量备份和恢复等,可以参看tar的manual