系统自动化管理_第1页
系统自动化管理_第2页
系统自动化管理_第3页
系统自动化管理_第4页
系统自动化管理_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、Unix/Linux 系统自动化管理:数据备份与同步篇程 燕, 软件工程师, IBM程燕,IBM 中国软件开发中心 HPC 部门的软件工程师,主要从事集群系统管理软件的相关研发工作。方 正, 软件工程师, IBM方正, IBM 中国软件开发中心 HPC 部门的软件工程师,主要从事集群系统管理软件的相关研发工作。简介: 本文是 Unix/Linux 系统管理自动化系列中的一篇,主要讲述如何实现自动化备份与同步系统数据。查看本系列更多内容标记本文!发布日期: 2009 年 8 月 20 日 级别: 初级 访问情况 726 次浏览 建议: 0

2、0;(添加评论) 平均分 (共 1 个评分 )前言数据是 Unix/Linux 系统中最重要的组成部分 , 但是数据的备份与同步却是最容易被忽略的任务。通过定期的数据备份与同步,可以在磁盘出现故障时,最大程度的降低数据损失。当用户误操作导致数据损坏或者丢失时,可以快速恢复。数据的备份不同于整个系统备份,将不同数据按照优先级分类,根据用户需求,备份重要文件。从而使数据独立于操作系统,降低备份成本与时间。不同的操作系统可能使用不同的数据备份方式,本文介绍了通用的 Unix/Linux 实用程序(tar 和 cpio),标准的 AIX 实用程序 (mksysb 和 backup),以及远程备份工具

3、rsync。确定备份策略在商业环境中,必须首先确定需要备份哪些文件以及备份所消耗的时间。如果备份过多的文件,会导致备份系统的成本过于庞大,从而带来不必要的开支。如果没有备份足够的数据,那么可能导致重要数据的丢失,反而带来更大的损失。当然,备份整个系统是简单易行的,但是通常这样的备份是浪费的且缺乏意义的。从减少备份系统的成本出发,只有当某些数据足够重要,需要共享,才具有备份的必要。基本数据一般分为以下几类:· 用户数据:所有的用户数据以及用户目录,及私人文件等。 · 系统信息:系统用户,组,密码,主机列表等。 · 应用程序:系统上启动的服务,比如 web 应用程序,

4、apache 等。 · 应用程序的配置文件与数据:针对不同的应用程序,不同的配置参数和重要数据文件。 · 数据库:事实上数据库可以单独提供针对数据库所有数据的备份与同步功能。 简单的数据备份是指一次性备份所有数据,然后再备份上次备份之后所做的修改。第一次备份是指“完全备份”,后一次备份是“增量备份”。通常适用于个人或者小型网站。对于机构或者大型网站来说,需要采用“多级备份”。将完全备份设定为 0 级,增量备份的级别分别是 1,2,3 等。在每个增量备份级别上,可备份同级或上一级的上次备份以来的变动。比如,如果我们有 1 0 盘磁带,如果使用简单备份进行日备份,则可恢复两周内

5、的数据。如果使用多级备份,例如:磁带 12, 月备份,每月第一个星期五磁带 36, 周备份,每周星期五(排除第一周)磁带 710,日备份,每周星期一到四,则可以将备份历史扩展到两个月。实用程序和命令tar 命令tar 命令是通用性较强的 Unix/Linux 归档命令。tar 将一个或多个文件和目录打包为单个文件,并保持原始文件的大小、拥有者、权限、文件类型及其在文件系统层次结构中的位置。tar 是磁带存档程序 (tape archive) 的首字母缩写,是最易用的数据备份实用程序。表 1. tar 命令的常用参数:参数 含义 -c 该参数会创建一个新的存档 -v 该参数会列出每个处理的文件名

6、称 -f 该参数会指定存档或设备名称 -z 该参数将用 gzip 对存档进行压缩或解压 -x 该参数将从存档文件中提取一个或多个文件 要创建 /CriticalData 的存档文件,使用: # tar -czvf /CriticalData/ 要恢复该目录,使用: # tar -xzvf /CriticalData/ tar 在提取文件和较小的目录方面表现不错,如果要恢复文件系统和卷组,我们更倾向于选用 cpio, 或是使用专用性更强的 Linux/Unix 数据备份实用程序。cpio 命令cpio 与 tar 类似,是通用性较强的 Unix/Linux 归档命令。一般被用来备份和恢复文件及目

7、录结构。表 2. cpio 命令的常用参数:参数 含义 -o 该参数会将数据拷贝到文件或设备中 -i 该参数会将数据从文件或设备中还原到系统中 -v 该参数会列出每个处理的文件名称 -z 该参数会按需要建立目录 -x 该参数会从标准输入读取文件路径名称,然后将这些文件复制到指定的目录 -d 该参数会按需要建立目录 -p 该参数会从标准输入读取文件路径名称,然后将这些文件复制到指定的目录 -B 该参数会将 I/O block 增加到 5120bytes,默认是 512bytes。加快数据备份速度 -m 该参数会保留时间属性 -u 该参数自动将较新的文件替换到较旧的文件 将 /CriticalDa

8、te 目录和它的所有文件和子目录建立存档,使用: # find /CriticalData/ -depth | cpio -ov > backup.cpio 要恢复该目录,使用: # cpio -ivdum <backup.cpio cpio 建立起来的归档文件包括文件头和文件数据两部分。文件头包含了对应文件的信息。如文件的 UID,GID,连接数以及文件大小等。其好处是可以保留硬连接,在恢复时默认情况下保留时间戳,无文件名称长度的限制。mksysb 介绍IBM AIX 与其它的 Unix 系统相比 , 有两个重要的特性: LVM (logical volume manager)

9、和 ODM (object database manager)。一般而言 , 用 cpio 或 tar 的指令亦可以备份 volume groups ,但并不能完全正确的备份完整的系统。利用 mksysb 来备份时,可制作一个可开机的磁带 , 并且可以正常的还原系统的 LVM 和 ODM。mksysb 备份一般用来在文件中或可启动磁带上创建 rootvg 的可安装镜像。如果需要对用户卷组进行备份的话,可使用 savevg。mksysb 的格式包括:· 基本操作系统启动镜像 · 基本操作系统安装镜像 · 虚拟目录 (TOC) · rootvg 上的实际数据

10、 图 1. mksysb 的格式mkinsttape 镜像包括以下重要文件:· Tapeblksz 该文件包含运行 mksysb 前设置的磁带驱动器的块大小。 · bosinst.data 该文件指定目标系统的需求以及基本操作系统安装程序是怎样运行 · image.data 该文件包含安装过程中实际安装的镜像的描述数据(文件大小、名称、装入点等)。 表 3. mksysb 命令的常用参数:参数 含义 -e 该参数将不备份 /etc/exclude.rootvg 文件中定义的文件 -i 该参数将调用 mkszfile 命令自动生成一个新的 image.data 文件

11、 -m 该参数将调用 mkszfile 命令生成映射文件 在运行 mksysb 前,可以运行 mksysb -i 命令来自动生成一个新的 image.data 文件。虚拟 TOC 可以确保 mksysb 磁带中包含的镜像数与基本操作系统安装磁带中的镜像数相同。最后,rootvg 数据包含用 mksysb 命令备份的实际数据。它实际上会使用 backup 命令保存 rootvg 中所有装入的文件系统的内容。如果对用户卷组进行备份的话,可使用下列的命令: # savevg -if /dev/rmt0 uservg 其中,-i 参数将调用 mkvgdata 命令;-f 参数将数据存储到指定设备或文件

12、中。backup 介绍backup 是 AIX 系统提供的一种备份文件和文件系统的方法,其本身就可以支持增量备份和多级备份,不必借助其它方式,其好处在此不在赘述。表 4. backup 命令的常用参数:参数 含义 -level 该参数指定备份级别(09), 默认是 9 -i 该参数将按名称备份整个文件系统 -f 该参数将数据备份到指定设备中 -p 该参数在归档之前先打包或压缩,且小于 2G 的文件。适用于不活动的文件系统 -q 该参数指可移动介质已准备就绪 -u 该参数将用文件系统的原始设备名称 , 时间日期以及备份级别来更新 /etc/dumpdates 文件 -v 该参数将在 backup

13、 时显示附加信息 将 /CriticalDate 目录和它的所有文件和子目录备份到指定设备,使用: # find /CriticalDate -depth | backup -i -f /dev/rmt0 将-level 和 -u 参数结合,可以进行多级和增量备份: # backup -0 -uf /dev/rmt0 /home rsync 介绍如果将数据备份与远程传输结合起来,譬如 scp,就可以实现数据的远程备份。但通常的备份方法,都无法对本地和远程目录中的内容进行同步。rsync(Remote Sync)是 Unix/Linux 系统下一款优秀的数据备份与同步工具。它可以对文件集进行同步

14、。然而更有价值的是,rsync 使用文件的增量,也就是说,它在网络中仅发送两个文件集合有区别的部分。这样可以占用更少的带宽,并且速度更快。rsync 的特性:· 能够更新整个目录树和文件系统 · 保持原文件的权限,时间,软硬链接 · 安装无需特殊权限 · 优化的流程,文件传输速率高 · 可以通过直接的 socket 连接传输文件,或者选择 rsh,ssh 等方式 · 支持匿名传输 表 5. rsync 命令的常用参数:参数 含义 -a 该参数表示以递归方式传输文件,并保持所有文件属性 -v 该参数显示详细的传输处理 -z 该参数对备份

15、的文件在传输时进行压缩处理 -P 该参数将显示备份过程 如果在客户端对服务器上的重要数据进行备份的话,可使用下列的命令:清单 1. rsync 命令演示 #rsync avzP rsyncServer:CriticalData /Backup = This is Critical Data Server = receiving file list . 9 files to consider Location/ Location/Locationlist1 97164953 13% 1.11MB/s 0:08:57 706609152 100% 1.17MB/s 0:09:37 (xfer#1,

16、 to-check=5/9) Name/Name1 44 100% 0.16kB/s 0:00:00 (xfer#2, to-check=3/9) Name/Name2 22 100% 0.08kB/s 0:00:00 (xfer#3, to-check=2/9) Time/Monday 17 100% 0.06kB/s 0:00:00 (xfer#4, to-check=0/9) sent 32111 bytes received 497214837 bytes 847820.88 bytes/sec total size is 706609242 speedup is 1.42 首次传输过

17、程进行完全备份,当再次运行该命令时,rsync 将只传输数据的增量。从而完成增量备份。如果在客户端对服务器上的重要数据进行同步的话,可使用下列的命令: # rsync -avzP -delete rsyncServer:CriticalData /Backup 这里调用 -delete 选项,表示客户端上的数据要与服务器端完全一致,如果 /Backup 目录中有服务器不存在的文件,则删除。从而保持客户端与服务器的数据同步。注意:谨慎使用 -delete 选项,最好不要把已经有重要数所据的目录当做客户端的备份目录,否则会误删除重要数据。如果用客户端的备份数据去恢复服务器,可使用下列的命令: #r

18、sync avzPO /Backup/ rsyncServer:CriticalData 这里需要将 rsync.conf 中 read only 设置为 false,同时使 /CirticalData 目录具有写权限。注意:也可调用 -delete 选项来保持客户端与服务器端的数据同步。在后面,将详细介绍 rsync.conf 的配置。-O 参数用于忽略目录的时间属性。数据备份与同步的自动化实现系统管理员必须执行的数据备份与同步任务大多牵涉到某种形式的系统配置,当管辖的任务比较庞大,数据量较多,但操作一样且有固定周期时,采用自动化脚本就成为必然。尤其是为多个操作系统提供支持时。要实现自动化操

19、作,脚本编制是必须掌握的基本技能。一个脚本由一系列命令构成,这些命令负责执行各种各样的任务。系统管理员在重复执行了几遍类似的命令后,通常就能准确地掌握要点,并希望利用脚本,将重复性的工作交给计算机去做。常用的脚本语言有 Shell,Perl,Tcl/Expect 等。实用命令的自动化实现本文的示例主要是通过 Shell 来实现的。Shell 是一种“解释性”语言,列出了管理员通过键盘敲入的相同命令, 并且每次执行一次这样的命令。例如执行一条简单的 tar 命令,可以使用下面的一个简单的脚本。清单 2. tar 自动化示例脚本 #!/bin/sh tar -czvf /CriticalData/

20、 如果我们想用其它的命令来实现数据备份,可以将以上的示例脚本中的命令部分替换掉,例如执行一条简单的 cpio 命令,可替换为下面一个简单的脚本。清单 3. mksysb 自动化示例脚本 #!/bin/sh find /CriticalData/ -depth | cpio -ov > backup.cpio 事实上我们可以通过 shell 中一些变量设置,条件测试以及流程控制语句来实现不同的需求。例如,管理员希望能够在周一到周日,通过 backup 命令做多级备份。我们可以设置 Level 变量,当变量满足不同条件时,就可以实现多级备份。清单 4. backup 自动化示例脚本 #!/b

21、in/sh / 判读当前系统的日期是星期几 DATE=date | awk ' printf $1 ' case $DATE in Mon) LEVEL=1; Tue) LEVEL=2; Wed) LEVEL=3; Thu) LEVEL=4; Fri) LEVEL=5; Sat) LEVEL=6; Sun) LEVEL=7; esac / 备份命令 backup -$LEVEL -uf /dev/rmt0 /home 虽然各种实用程序和命令以及参数各不相同,但 shell 自动化脚本的基本思路是类似的。如果系统管理员需要连续地定期地执行脚本,可以借助 Unix/Linux 系统

22、的 crontab 功能。rsync 的自动化实现由于 rsync 在数据备份与同步上的优秀表现,本文将主要介绍用 rsync 来实现数据的备份与同步。要使用 rsync,只需要将主服务器安装并配置成为 rsync 服务器,将另外一台装有 rsync 的机器作为备份客户端。在对 rsync 服务器配置结束以后,就可以在客户端发出 rsync 命令来实现将服务器端的文件备份到客户端来。在客户端创建自动化脚本,并启用 cron 服务,就可以定期对主服务器的数据进行自动备份与同步。1. 在服务器端手动创建 rsync 配置文件 创建 rsync.conf 作为服务器配置文件假设我们在服务器端,设置需

23、要备份的目录 /CriticalData, 但不需要备份 /CriticalData 目录下的 Common 目录。先创建一个目录,用于存放 rsync 相关配置文件 # mkdir /etc/rsyncd 创建 rsync.conf #touch /etc/rsyncd/rsyncd.conf 编辑 rsyncd.conf清单 5.rsyncd.conf 配置文件清单 5.rsyncd.conf 配置文件 gid = users read only = trueuse chroot = truetransfer logging = truelog format = %h %o %f %l %

24、blog file = /var/log/rsyncd.logpid file = /var/run/rsyncd.pidsecrets file = /etc/rsyncd.secretsmax connections = 5timeout = 300motd file = /etc/rsyncd/rsyncd.motdCriticalDatapath = /CriticalData list = trueignore errors comment =This is Critical Dataauth users = rsync secrets file = /etc/rsyncd/rsyn

25、cd.secretsexclude = Common/ rsync.conf 中主要分为全局变量和模块两部分。模块用 表示,模块之前的为全局变量。重要参数说明:path指定该模块所定义的备份目录的路径,该参数是必须指定的。exclude用来指定多个由空格隔开的多个文件或目录 ( 相对路径 ),并将其添加到 exclude 列表中。这等同于在客户端命令中使用 -exclude 参数。一个模块只能指定一个 exclude 选项。但是需要注意的一点是该选项有一定的安全性问题,客户端很有可能绕过 exclude 列表,如果希望确保特定的文件不能被访问,那就最好结合 uid/gid 选项一起使用。aut

26、h users该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户不一定是客户端存在的用户。如果"auth users"被设置,那么客户端发出对该模块的连接请求时,需要对用户身份进行验证。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块 ( 也就是匿名方式 )。创建 rsync.secrets 作为用户密码文件 #touch /etc/rsyncd/rsyncd.secrets #chmod 600 /etc/rsyncd/rsyncd.secrets 编辑 rsyn

27、cd.secrets, 格式为“用户 : 密码” rsync:passwd 注意:rsync是服务器上存在的用户,同时将/CriticalData的使用者改为rsync #chown -R rsync /CriticalData/ 创建 rsync.motd 作为登录消息文件此文件是选择性配置文件,也可以不创建。 #touch /etc/rsyncd/rsyncd.motd 编辑 rsyncd.conf =This is Critical Data Server= 2. 启动 rsync 将 rsync 启动 #/usr/bin/rsync -daemon -config=/etc/rsync

28、d/rsyncd.conf 可以将这个命令写入 /etc/rc.d/rc.local 中,当系统启动时,自动运行 rsync。3. 创建脚本 在客户端创建一个 /root/rsync/ 目录用来存放自动化脚本和其它文件。创建 /root/rsync/rsync.sh 自动化脚本,保证权限为 755。清单 6. rsync 自动化示例脚本 #!/bin/sh export RSYNC_PASSWORD=passwd export PATH=$PATH:/bin:/usr/bin:/usr/local/bin / 设置远程服务器与需要备份的目录 SERVER=rsyncServer DIR=Cri

29、ticalData / 设置客户端上的用于备份的目录 BDIR=/Backup BASE=Current INCREMENTDIR=date +%Y-%m-%d / 在客户端灵活使用 exclude 功能;设置日志 EXCLUDES=/root/rsync/excludes LOG=/tmp/rsync.log / 参数设置,调用 backup-dir 将服务器端的增量文件存储到 INCREMENTDIR 目录下 OPTS="-avz-force -delete -delete-excluded -exclude-from=$EXCLUDES -b -backup-dir=$BDIR

30、/$INCREMENTDIR -ignore-errors" / 确保客户端上的用于备份的目录存在 install -d $BDIR/$BASE / 实现数据备份与同步,将日志邮寄给 root 用户 run_rsync() echo "=Begin rsync: date=" >>$LOG 2>&1 du -s $BDIR/* >>$LOG 2>&1 rsync $OPTS $SERVER:$DIR $BDIR/$BASE >>$LOG 2>&1 echo "=End rsyn

31、c: date=" >>$LOG 2>&1 mail root -s "Backup Report" < $LOG rm $LOG / 条件测试,运行程序 if -f $EXCLUDES ; then if -d $BDIR ; then run_rsync else echo "cant find $BDIR" exit fi else echo "cant find $EXCLUDES" exit fi 执行完 rsync.sh 后,可以查看 /Backup 目录来检查数据的正确性。将有两种目录,一个是 Current 目录,用于存放当前服务器端备份和同步后的数据。在脚本运行过程中,进行增量传输。另外还有一个类似于 2009-06-16 的目录,用于存放已在服务器端删除的增量数据。目录的名称将根据脚本执行的日期定义。 # pwd /Backup # ls 2009-06-16 Current 4. 启用 cron 服务,实现定期自动备份 如果系统管理员需要连续地定期地执行脚本,那么就需要借助 Unix/Linux 系统的 crontab 功能,使系统可以定期地调用 rsync.sh 脚本。使用命令“crontab -e”编辑 crontab,添加一条类似于以下的项: 0

温馨提示

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

评论

0/150

提交评论