Chinaunix首页 | 论坛 | 博客
  • 博客访问: 485204
  • 博文数量: 100
  • 博客积分: 7010
  • 博客等级: 少将
  • 技术积分: 995
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-22 15:44
文章分类

全部博文(100)

文章存档

2006年(90)

2005年(10)

我的朋友

分类: 服务器与存储

2006-05-30 15:48:31

Linux系统管理与优化--第十一章 备份和恢复的过程

作者:Gerhard Mourani


服务器备份过程

服务器恢复过程

更多的资料

tar备份的替代品

服务器备份过程
服务器的安全性和可靠性是与备份密切相关的。定期备份是一件非常重要的事。错误随时会发生。有可能是硬件出错、电源问题或是人为的错误。如果你是系统管理员,很有可能有人会让你恢复一些被误删除的文件。

如果定期备份,就能把这种损失减到最小。最安全的备份方法是把它们备份到别的地方,如:网络上、磁带、可移动驱动器(removable drive)或可写光驱,等等。

在linux上有很多备份的方法。包括所有Linux发行版本都有的命令行工具,象“dd”、“dump”、“cpio”和“tar”。也有基于文本界面的工具,例如:“Amanda”,它提供更友好的用于备份和恢复的界面。而且,还有商业备份软件,如:“BRU”。

显然,备份和恢复的过程会因为不同的备份方案而有所区别。所以,我们介绍最常用的备份工具“tar”,它是*nix平台上十分常见的命令行备份工具。

下面的命令把整个Linux服务器上的东西备份到“/archive”文件系统上。不过,这些不包括“/proc”这个虚拟的文件系统、任何mount到“/mnt”目录下的文件系统和“/archive”文件系统(没道理自己备份自己)。

注意:在备份文件系统时,不要包含“/proc” 虚拟文件系统!在“/proc”目录下的文件不是真正的文件,只不过是描述并指向内核数据结构的简单的文件链接。而且,也不要包含“/mnt”和“/archive”目录下的文件。

备份整个系统的命令如下:

[root@deep]# cd /
[root@deep]# tar -zcvpf /archive/full-backup-`date ‘+%d-%B-%Y‘`.tar.gz
--directory / --exclude=proc --exclude=mnt --exclude=archive
--exclude=cache .

l z 表示备份的数据将使用“gzip”进行压缩。

l c表示创建归档文件。

l v显示文件列表。

l p保存权限,文件的访问权限将被“记住”。

l f说明下一个参数就是归档的文件名或设备名。

请注意一下带有当前日期的文件名是如何产生的,其方法是在两个后引号之间放入“date”命令。通常的命名习惯是给未压缩的文档加一个“tar”后缀,经过压缩后的加上“tar.gz”。

“--directory”选项告诉tar先转到规定的目录下(本例中为‘/’目录),然后进行备份。“--exclude”选项告诉tar不要备份指定的目录或文件。最后,命令末尾的“.”号告诉tar要备份当前目录下的所有内容。

再举一个例子,这一次只把指定的文件系统备份到SCSI磁带驱动器:

只备份指定的文件到一个SCSI磁带驱动器,使用如下命令:

[root@deep]# cd /
[root@deep]# tar -cvpf /dev/nst0 --label="Backup set created on `date ‘+%d-%B-%Y‘`."
--directory / etc home chroot

注意:在上面的命令中没有用到“z”(压缩)选项,但是,我们建议把数据压缩后,再送到磁带上。因为磁带驱动器是一个设备,所以不能用文件名表示。因此,只能把设备名“/dev/nst0”作为tar的参数。“/dev/nst0”表示SCSI总线上的第一个磁带设备。

注意:“/dev/nst0”设备在备份集写完后不回卷;因此可以在一个磁带上写多个集合。你也可以指定设备为“/dev/st0”,这时磁带在备份集写完后自动回卷。

既然我们无法为备份集指定文件名,“--label”选项可以用来在归档文件里写入一些备份集的信息。最后,只有在“/etc”,“/home”和“/chroot”目录下的文件才被备份到磁带。

使用磁带时,可以用下面的命令回卷和弹出磁带:

[root@deep]# mt -f /dev/nst0 rewind
[root@deep]# mt -f /dev/nst0 offline

服务器恢复过程
当我们需要恢复一个重要文件时,正确地恢复就比定期备份更重要了!正如以上所讨论的,恢复的过程会因为备份方案的不同而有区别。在本节中,我们讨论如何恢复用tar备份过的文件。

以下的命令将从“full-backup-14-November-1999.tar.gz”档案中恢复所有的文件,该档案是在上面的服务器备份例子中生成的。

恢复整个系统的备份,命令如下:

[root@deep]# cd /
[root@deep]# tar –zxvpf /archive/full-backup-14-November-1999.tar.gz

此命令解开了压缩档案中的所有文件,同时保持了原来的文件属主和权限。

l z 表明档案是使用gzip压缩的。

l x 选项表示解包。

l v 显示得到的文件列表。

l p 保持权限;文件保护信息将被记住。

l f 后面的参数是档案的文件名或设备。

如果不需要恢复档案里的所有文件,可以参照以下的例子恢复指定的一个或多个文件:

恢复指定文件,命令如下:

[root@deep]# cd /
[root@deep]# tar -zxvpf /archive/full-backup-09-October-1999.tar.gz
etc/passwd usr/sbin/chpasswd

该命令从档案中恢复文件“etc/passwd”和“usr/chpasswd”。

如果想从档案中恢复一个或少量的几个文件,就必须先找到文件名和它在档案中的具体路径。以下的例子将解决这个问题:

[root@deep]# cd /
[root@deep]# tar -ztvpf /archive/full-backup-09-October-1999.tar.gz
| grep -i chpasswd

在这个例子里,档案中的所有文件名被列出。输出结果被重定向到grep命令,grep的“i” 选项忽略了大小写,显示出路径或文件名中含“chpasswd”的所有文件。一旦找到了要恢复的文件,就可以指定文件名并使用上面的tar命令。

注意:当创建档案文件时,tar会去掉文件路径开头的“/”斜线字符。这意味着文件恢复的位置可能和它备份时的位置不一样。因此,解决问题的办法就是在根目录下做所有的备份和恢复。另一种办法是先在不同的目录下恢复需要的文件,然后通过比较、移动或更新把文件恢复到原来的位置。

注意:如果你的系统里有文件被“chattr”命令设了不可变位,这些文件在恢复的时候将不会保持该位。你必须在备份结束后再使用命令“chattr”重新设置不可变位。

更多的资料
需要更多信息,你可以读man页:

tar(1) -GNU版的tar归档工具

tar备份的替代品
AMANDA

AMANDA(Advanced Maryland Automatic Network Disk Archiver 高级马里兰自动网络磁盘归档工具)是一个备份系统,它允许局域网的管理员用一个主备份服务器将多台主机的内容备份到一个大容量磁带驱动器上。AMANDA使用本地dump和/或GNU的tar工具并能备份大量的多种版本的UNIX工作站。最新的版本还能使用SAMBA来备份微软的Windows 95/NT主机。

软件包

AMANDA 主页:

BRU

BRU是为实现最大的可靠性和灵活性而设计的Unix备份和恢复工具。它让Unix的备份更方便、快捷和安全。BRU远不止是tar和cpio的替代品,而是真正的多功能的备份系统。

软件包

BRU的主页:

阅读(780) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~