系统管理员工具包-备份关键的信息_第1页
系统管理员工具包-备份关键的信息_第2页
系统管理员工具包-备份关键的信息_第3页
系统管理员工具包-备份关键的信息_第4页
系统管理员工具包-备份关键的信息_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、系统管理员工具包: 备份关键的信息简介: 大多数 UNIX 管理员都有相应的方法来备份 UNIX 计算机中的数据和信息,但对于配置文件和提供计算机运行所需配置数据的其他内容,又应该如何处理呢?本文提供了相关技术的详细信息,这些技术用于针对关键的文件,实现有效和高效的备份系统。关于本系列通常,UNIX 管理员都拥有一套常用的辅助进程管理的关键实用工具、诀窍和系统。本文提供了各种用于简化各个过程的关键实用工具、命令行链和脚本。这些工具中的一部分来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员的工作压力的要求。本系列文章主要专注于最大限度地利用各种 UNIX 环境中可用的工具,包

2、括简化异类环境中的管理任务的方法。确定关键的文件在对 UNIX 系统建立备份时,最重要的是其中包含的数据。无论是数据库、开发源代码文件或其他类型的所谓用户生成的 信息,备份这些数据都是很重要的,它们可以确保在出现故障或其他问题的情况下,您可以恢复这些数据,并重新回到工作中。然而,系统中存在大量这样的文件和信息,从技术上看它们并不是用户数据,但这些文件可能需要耗费相当长的时间进行重建或者重新配置。例如,重新配置服务器或为您的域重建域名系统 (DNS) 文件需要多长时间? 完全备份,即复制系统中所有的文件,很明显这样做可以保存所有的信息,但这可能是一种代价很大的信息备份方式。您应该能够通过挑选那些

3、配置、生成或支持相关信息和应用程序的特定文件,从而创建有效的备份。 在 UNIX 或 Linux 系统中,大部分系统配置文件位于 /etc 目录,但是您应该考虑对所有可能的文件(以及可能的位置)进行备份,具体包括: 主配置目录 (/etc) DNS 域信息 (/var/bind) NIS/NIS+ 文件和配置 (/var/yp) Apache 或其他 Web 服务器配置(/var/apache、/etc/apache 或 /usr/local/apache) 邮件文件或文件夹(/var/mail 和 /usr/mail) Lightweight Directory Access Protoco

4、l (LDAP) 服务器数据(/var/ldap 或 /usr/local/ldap) 安全证书 自定义内核驱动程序 内核配置或构建配置和参数 许可密钥和序列号 自定义脚本和应用程序 用户/root 登录脚本 邮件配置;特别是,如果您使用了像 Cyrus Internet Message Access Protocol (IMAP) 这样的解决方案,其中对用户邮件文件夹进行了特殊的记录和索引 其他的文件和信息来源则取决于具体的系统和环境,但是提出这样一份关键配置文件的列表不应该耗费太长的时间,而如果丢失这些信息,将会对您的公司或系统造成极大的影响。 为进行存储而整理数据尽管直接从数据的源位置对

5、其进行备份非常方便,但是在对其进行备份之前,先将备份数据复制到一个单独的目录将使得您能够更好地选择要复制的文件,并且让您能够更灵活地选择合适的备份方法。如果文件位于同一个位置,那么您可以将其备份到磁带、磁盘,或将这些内容复制到另一台计算机,而无需对源文件进行重新组织。要对备份到任何目标的文件进行重新配置,只需更改相应的脚本,而该脚本对这些文件进行整理并将其复制到备份准备目录。因为您拥有这些信息的本地的和直接的副本,所以在发生故障时可以快速和轻松地恢复这些数据,并且您依然保留了将这些信息备份到磁带、磁盘或另一个系统的能力。 信息的整理方式非常重要,因为不同的解决方案对应着不同的存储需求、技术和恢

6、复机制。 记录信息的方法您可以选择各种各样的方法来进行实际的备份和信息存储。显而易见的选择是将文件备份到传统媒介,如磁带。可以将相关信息复制到网络上的另一台计算机,这是一种比较简单的解决方案,但是存在许多优缺点。任何成功的备份解决方案都有一个关键要素,即在另一个位置保存重要信息的副本。无论是另一个物理设备、可移动存储设备或另一台计算机,都是可行的。 从灾难恢复的角度来看,可移动存储设备(磁带、磁盘、甚至 USB)是最可靠的备份,因为可以将所存储的信息保存在现场以外的其他位置。这样做可以在放置计算机的场所遭遇大灾难(如火灾或被盗)时,得以幸免。使用另一台计算机进行存储则意味着备份数据基本上是联机

7、的和可用的。在这种情况下,恢复备份数据可能非常简单,在发生故障时只需将这些文件复制回您的服务器,或者在发生系统故障时将它们复制到替换系统。当使用另一台计算机来存储您的备份数据时,最好在本地保存这些文件的多个副本,但是应该在可能的情况下,为这些文件使用直接可用的非现场位置。这台计算机可能是 Internet 上的另一台计算机、您的 WAN 或其他站点上的另一台计算机。这样可以提供必要的冗余和安全性。使用专业的或商业的备份解决方案,您需要在恢复备份数据之前,重新安装该软件,而在安装该软件之前,可能需要使用某些配置信息和关键文件。 使用 tar 存储备份数据使用 tar、cpio 或其他的存档文件类

8、型,可能是最直接的信息存储方式。当使用这种方法时,最好注明这些文件的日期,并创建一个简单的备份脚本,专门用来生成指定的文件。另一方面,您还需要一种方法,以便删除不再需要的备份数据(例如,那些超过了特定时间段的备份数据)。清单 1 显示了一个简单的脚本,该脚本为不同的目录创建了经过 tar 处理和压缩(使用 bzip2)的备份。这些备份文件创建于与远程系统共享的网络文件系统 (NFS),而该远程系统保留了相应的备份副本。 清单 1. 为不同的目录创建经过 tar 处理和压缩的备份#!/bin/bashDATE=date +%Y%m%d.%H%MHOST=hostnameTEMP=/mnt/bac

9、kupprepareecho Preparing backup.cd $TEMPfiles=/usr/local/mcslp/filesbydate.pl notlast5days $HOST*if -n $files then echo Deleting old files: $files rm $filesficd /etctar cf - ./* |bzip2 -9 - $TEMP/$HOST-etc.$DATE.tar.bz2cd /var/bindtar cf - ./* |bzip2 -9 - $TEMP/$HOST-bind.$DATE.tar.bz2cd /export/hom

10、e/webstar cf - ./* |bzip2 -9 - $TEMP/$HOST-webs.$DATE.tar.bz2cd /etc/apache2tar cf - ./* |bzip2 -9 - $TEMP/$HOST-webconfig.$DATE.tar.bz2使用 date 命令生成 DATE 变量,并创建一个“.2200”或“10PM on 27th of June 2006”形式的文件名。要使得备份脚本具有可移植性,要求创建的所有文件的前缀中包含创建该文件的主机的名称,这样一来就可以很容易地将多台主机的内容备份到相同的位置,并且 TEMP 目录作为每个备份的目标。 使用单独的

11、Perl 脚本来确定可以对备份准备目录中哪些文件进行删除。稍后将研究这个脚本。在这个脚本中,您可以指定需要保留最近 5 天的文件,换句话说,该脚本将根据备份文件的文件名中的日期说明,选择那些不是最近 5 天内创建的文件。 实际的备份过程是一个简单的 tar 命令,同时还使用了 bzip2 对文件进行压缩。因为生成的文件可能很大,所以您可能需要对这个方法进行改进,以便仅选择那些可能在某个时间段内进行过更改的文件。通过使用 find 命令选择所需的文件(请参见清单 2),您可以达到这个目的。清单 2. 使用 bzip2 对文件进行压缩的 tar 命令tar cf - find . -type f

12、-mtime -1 | bzip2 -9 - $TEMP/$HOST-webconfig.$DATE.tar.bz2您可以在 find 语句中仅指定需要选择的文件,这样可以防止对目录的更改导致将那些没有更改的文件包含到 tar 文件中。这将包含当前目录中的文件,如清单 3 所示。清单 3. 引用当前目录$ cd /etc$ tar cf etc.tar ./*这样做可以避免显式地指定目录,如清单 4 所示。清单 4. 避免显式地指定目录$ tar cf etc.tar /etc这样可以确保将恢复的文件放到备用的目录,而不是运行中的某个位置。 这个用于删除旧文件的脚本将使用文件名,提取其中嵌入的

13、日期和时间,并确定该文件是否属于指定的界限,例如,在不在特定的天数之内(请参见清单 5)。 清单 5. 用于删除旧文件的脚本#!/usr/local/bin/perlmy $choice = shift;my files = ARGV;my selection;if ($choice = /thismonth/) my ($day,$mon,$year) = dateaslist(); my $match = sprintf(%04d%02d,$year,$mon); foreach my $file (files) if ($file = m/$match/ & $choice eq thi

14、smonth) push selection,$file; elsif ($file ! m/$match/ & $choice eq notthismonth) push selection,$file; elsif ($choice = /today/) my ($day,$mon,$year) = dateaslist(); my $match = sprintf(%04d%02d%02d,$year,$mon,$day); foreach my $file (files) if ($file = m/$match/ & $choice eq today) push selection,

15、$file; elsif ($file ! m/$match/ & $choice eq nottoday) push selection,$file; elsif ($choice = /last(d+)days/) my $days = $1; my ($day,$mon,$year) = dateaslist(time()-($1*24*3600); my $match = sprintf(%04d%02d%02d,$year,$mon,$day); my $spec = sprintf(last%ddays,$days); my $notspec = sprintf(notlast%d

16、days,$days); foreach my $file (files) my ($date) = ($file = m/(d8)/); push selection,$file if ($date = $match & $choice eq $spec); push selection,$file if ($date $match & $choice eq $notspec); print join ,selection;sub dateaslist my ($time) = _; $time = time() unless defined($time); my ($day,$mon,$y

17、ear) = (localtime($time)3.5; $mon+; $year+= 1900; return($day,$mon,$year);使用这个脚本,您可以通过各种方法挑选出备份文件(请参见清单 6)。 清单 6. 挑选备份文件$ filesbydate.pl last5days # Files created in the last 5 days$ filesbydate.pl notlast14days # Files 15 days or older$ filesbydate.pl nothismonth # Files not created this month请记住,比

18、较操作针对于文件名,而不是文件系统的创建或修改日期,所以该脚本可以对头天晚上创建的文件进行操作。 使用 rsync 存储备份数据rsync 工具可以在不同的位置或计算机之间复制整个目录结构,它通过使用一种特殊的算法,可以实现仅传输更改过的文件。这使得它成为一种非常高效的复制文件的方法,特别是在不同的计算机之间,这也意味着,备份过程将很快完成。 有两种使用 rsync 的方法,要么作为一种简单的同步方法,使用这种方法,您可以将所有重要的文件复制到新的驱动器或系统,要么作为一种备份方法,按日期复制整个目录树,这与在前面的示例中创建 tar 备份文件的方法相同。 前面这种方法既快速又简单,但是您不能

19、回到出现故障之前某个特定的日期。而后面这种方法提供了基于日期的选择,但是它需要更多的管理(尤其是因为您需要删除不再需要的旧版本的文件)以及相当数量的存储空间,因为没有对这些文件进行压缩。然而,您获得了更简单和更直接的访问方式。 如何对 rsync 进行设置,这超出了本文的范围,但在完成了相应的配置工作之后,进行信息的传输和同步就非常简单了。清单 7 显示了使用 rsync 进行文件同步的脚本。清单 7. 使用 rsync 对文件进行同步的脚本#!/bin/bashDESTBASE=adminatuin:/mnt/backupprepareHOST=hostnamecd /export/data

20、/svnrsync -stats -rsh=/usr/bin/ssh -delete -recursive -times -og -links . $DESTBASE/$HOST/svncd /export/home/websrsync -stats -rsh=/usr/bin/ssh -delete -recursive -times -og -links . $DESTBASE/$HOST/webscd /var/bindrsync -stats -rsh=/usr/bin/ssh -delete -recursive -times -og -links . $DESTBASE/$HOST

21、/bindcd /etcrsync -stats -rsh=/usr/bin/ssh -delete -recursive -times -og -links . $DESTBASE/$HOST/etc指定的 rsync 命令选项如下所示: -stats 显示同步的统计信息。 -rsh 告诉 rsync 使用安全 Shell (SSH) 复制文件(出于安全考虑)。 -delete 删除目标中那些在本地目录中不存在的文件。 -recursive 确保对整个目录进行检查。 -times 保留文件的创建和修改时间。 -og 保留所有权和组信息。 -links 将链接复制为链接,而不是它们所链接的文件。 DESTBASE 变量指定了基本位置(在本示例中为远程主机上的文件系统),而 HOST 变量则保存了主机名信息,以便您能够对多台主机使用相同的脚本进行备份。备份整理的数据在前面的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论