UnixLinux 系统自动化管理 数据备份与同步篇.docx
- 文档编号:11335921
- 上传时间:2023-02-27
- 格式:DOCX
- 页数:19
- 大小:37.47KB
UnixLinux 系统自动化管理 数据备份与同步篇.docx
《UnixLinux 系统自动化管理 数据备份与同步篇.docx》由会员分享,可在线阅读,更多相关《UnixLinux 系统自动化管理 数据备份与同步篇.docx(19页珍藏版)》请在冰豆网上搜索。
UnixLinux系统自动化管理数据备份与同步篇
Unix/Linux系统自动化管理:
数据备份与同步篇
程燕,软件工程师,IBM
程燕,IBM中国软件开发中心HPC部门的软件工程师,主要从事集群系统管理软件的相关研发工作。
方正,软件工程师,IBM
方正,IBM中国软件开发中心HPC部门的软件工程师,主要从事集群系统管理软件的相关研发工作。
简介:
本文是Unix/Linux系统管理自动化系列中的一篇,主要讲述如何实现自动化备份与同步系统数据。
查看本系列更多内容
标记本文!
发布日期:
2009年8月20日
级别:
初级
访问情况 726次浏览
建议:
0 (添加评论)
平均分(共1个评分)
前言
数据是Unix/Linux系统中最重要的组成部分,但是数据的备份与同步却是最容易被忽略的任务。
通过定期的数据备份与同步,可以在磁盘出现故障时,最大程度的降低数据损失。
当用户误操作导致数据损坏或者丢失时,可以快速恢复。
数据的备份不同于整个系统备份,将不同数据按照优先级分类,根据用户需求,备份重要文件。
从而使数据独立于操作系统,降低备份成本与时间。
不同的操作系统可能使用不同的数据备份方式,本文介绍了通用的Unix/Linux实用程序(tar和cpio),标准的AIX实用程序(mksysb和backup),以及远程备份工具rsync。
确定备份策略
在商业环境中,必须首先确定需要备份哪些文件以及备份所消耗的时间。
如果备份过多的文件,会导致备份系统的成本过于庞大,从而带来不必要的开支。
如果没有备份足够的数据,那么可能导致重要数据的丢失,反而带来更大的损失。
当然,备份整个系统是简单易行的,但是通常这样的备份是浪费的且缺乏意义的。
从减少备份系统的成本出发,只有当某些数据足够重要,需要共享,才具有备份的必要。
基本数据一般分为以下几类:
∙用户数据:
所有的用户数据以及用户目录,及私人文件等。
∙系统信息:
系统用户,组,密码,主机列表等。
∙应用程序:
系统上启动的服务,比如web应用程序,apache等。
∙应用程序的配置文件与数据:
针对不同的应用程序,不同的配置参数和重要数据文件。
∙数据库:
事实上数据库可以单独提供针对数据库所有数据的备份与同步功能。
简单的数据备份是指一次性备份所有数据,然后再备份上次备份之后所做的修改。
第一次备份是指“完全备份”,后一次备份是“增量备份”。
通常适用于个人或者小型网站。
对于机构或者大型网站来说,需要采用“多级备份”。
将完全备份设定为0级,增量备份的级别分别是1,2,3等。
在每个增量备份级别上,可备份同级或上一级的上次备份以来的变动。
比如,如果我们有10盘磁带,如果使用简单备份进行日备份,则可恢复两周内的数据。
如果使用多级备份,例如:
磁带1-2,月备份,每月第一个星期五
磁带3-6,周备份,每周星期五(排除第一周)
磁带7-10,日备份,每周星期一到四,则可以将备份历史扩展到两个月。
实用程序和命令
tar命令
tar命令是通用性较强的Unix/Linux归档命令。
tar将一个或多个文件和目录打包为单个文件,并保持原始文件的大小、拥有者、权限、文件类型及其在文件系统层次结构中的位置。
tar是磁带存档程序(tapearchive)的首字母缩写,是最易用的数据备份实用程序。
表1.tar命令的常用参数:
参数
含义
-c
该参数会创建一个新的存档
-v
该参数会列出每个处理的文件名称
-f
该参数会指定存档或设备名称
-z
该参数将用gzip对存档进行压缩或解压
-x
该参数将从存档文件中提取一个或多个文件
要创建/CriticalData的存档文件,使用:
#tar-czvfbackup.tar.gz/CriticalData/
要恢复该目录,使用:
#tar-xzvfbackup.tar.gz/CriticalData/
tar在提取文件和较小的目录方面表现不错,如果要恢复文件系统和卷组,我们更倾向于选用cpio,或是使用专用性更强的Linux/Unix数据备份实用程序。
cpio命令
cpio与tar类似,是通用性较强的Unix/Linux归档命令。
一般被用来备份和恢复文件及目录结构。
表2.cpio命令的常用参数:
参数
含义
-o
该参数会将数据拷贝到文件或设备中
-i
该参数会将数据从文件或设备中还原到系统中
-v
该参数会列出每个处理的文件名称
-z
该参数会按需要建立目录
-x
该参数会从标准输入读取文件路径名称,然后将这些文件复制到指定的目录
-d
该参数会按需要建立目录
-p
该参数会从标准输入读取文件路径名称,然后将这些文件复制到指定的目录
-B
该参数会将I/Oblock增加到5120bytes,默认是512bytes。
加快数据备份速度
-m
该参数会保留时间属性
-u
该参数自动将较新的文件替换到较旧的文件
将/CriticalDate目录和它的所有文件和子目录建立存档,使用:
#find/CriticalData/-depth|cpio-ov>backup.cpio
要恢复该目录,使用:
#cpio-ivdum cpio建立起来的归档文件包括文件头和文件数据两部分。 文件头包含了对应文件的信息。 如文件的UID,GID,连接数以及文件大小等。 其好处是可以保留硬连接,在恢复时默认情况下保留时间戳,无文件名称长度的限制。 mksysb介绍 IBMAIX与其它的Unix系统相比,有两个重要的特性: LVM(logicalvolumemanager)和ODM(objectdatabasemanager)。 一般而言,用cpio或tar的指令亦可以备份volumegroups, 但并不能完全正确的备份完整的系统。 利用mksysb来备份时,可制作一个可开机的磁带,并且可以正常的还原系统的LVM和ODM。 mksysb备份一般用来在文件中或可启动磁带上创建rootvg的可安装镜像。 如果需要对用户卷组进行备份的话,可使用savevg。 mksysb的格式包括: ∙基本操作系统启动镜像 ∙基本操作系统安装镜像 ∙虚拟目录(TOC) ∙rootvg上的实际数据 图1.mksysb的格式 mkinsttape镜像包括以下重要文件: ∙Tapeblksz该文件包含运行mksysb前设置的磁带驱动器的块大小。 ∙bosinst.data该文件指定目标系统的需求以及基本操作系统安装程序是怎样运行 ∙image.data该文件包含安装过程中实际安装的镜像的描述数据(文件大小、名称、装入点等)。 表3.mksysb命令的常用参数: 参数 含义 -e 该参数将不备份/etc/exclude.rootvg文件中定义的文件 -i 该参数将调用mkszfile命令自动生成一个新的image.data文件 -m 该参数将调用mkszfile命令生成映射文件 在运行mksysb前,可以运行mksysb-i命令来自动生成一个新的image.data文件。 虚拟TOC可以确保mksysb磁带中包含的镜像数与基本操作系统安装磁带中的镜像数相同。 最后,rootvg数据包含用mksysb命令备份的实际数据。 它实际上会使用backup命令保存rootvg中所有装入的文件系统的内容。 如果对用户卷组进行备份的话,可使用下列的命令: #savevg-if/dev/rmt0uservg 其中,-i参数将调用mkvgdata命令;-f参数将数据存储到指定设备或文件中。 backup介绍 backup是AIX系统提供的一种备份文件和文件系统的方法,其本身就可以支持增量备份和多级备份,不必借助其它方式,其好处在此不在赘述。 表4.backup命令的常用参数: 参数 含义 -level 该参数指定备份级别(0-9),默认是9 -i 该参数将按名称备份整个文件系统 -f 该参数将数据备份到指定设备中 -p 该参数在归档之前先打包或压缩,且小于2G的文件。 适用于不活动的文件系统 -q 该参数指可移动介质已准备就绪 -u 该参数将用文件系统的原始设备名称,时间日期以及备份级别来更新/etc/dumpdates文件 -v 该参数将在backup时显示附加信息 将/CriticalDate目录和它的所有文件和子目录备份到指定设备,使用: #find/CriticalDate-depth|backup-i-f/dev/rmt0 将-level和-u参数结合,可以进行多级和增量备份: #backup-0-uf/dev/rmt0/home rsync介绍 如果将数据备份与远程传输结合起来,譬如scp,就可以实现数据的远程备份。 但通常的备份方法,都无法对本地和远程目录中的内容进行同步。 rsync(RemoteSync)是Unix/Linux系统下一款优秀的数据备份与同步工具。 它可以对文件集进行同步。 然而更有价值的是,rsync使用文件的增量,也就是说,它在网络中仅发送两个文件集合有区别的部分。 这样可以占用更少的带宽,并且速度更快。 rsync的特性: ∙能够更新整个目录树和文件系统 ∙保持原文件的权限,时间,软硬链接 ∙安装无需特殊权限 ∙优化的流程,文件传输速率高 ∙可以通过直接的socket连接传输文件,或者选择rsh,ssh等方式 ∙支持匿名传输 表5.rsync命令的常用参数: 参数 含义 -a 该参数表示以递归方式传输文件,并保持所有文件属性 -v 该参数显示详细的传输处理 -z 该参数对备份的文件在传输时进行压缩处理 -P 该参数将显示备份过程 如果在客户端对服务器上的重要数据进行备份的话,可使用下列的命令: 清单1.rsync命令演示 #rsync–avzPrsync@Server: : CriticalData/Backup =========================== ThisisCriticalDataServer =========================== receivingfilelist... 9filestoconsider Location/ Location/Locationlist1 9716495313%1.11MB/s0: 08: 57 706609152100%1.17MB/s0: 09: 37(xfer#1,to-check=5/9) Name/Name1 44100%0.16kB/s0: 00: 00(xfer#2,to-check=3/9) Name/Name2 22100%0.08kB/s0: 00: 00(xfer#3,to-check=2/9) Time/Monday 17100%0.06kB/s0: 00: 00(xfer#4,to-check=0/9) sent32111bytesreceived497214837bytes847820.88bytes/sec totalsizeis706609242speedupis1.42 首次传输过程进行完全备份,当再次运行该命令时,rsync将只传输数据的增量。 从而完成增量备份。 如果在客户端对服务器上的重要数据进行同步的话,可使用下列的命令: #rsync-avzP--deletersync@Server: : CriticalData/Backup 这里调用--delete选项,表示客户端上的数据要与服务器端完全一致,如果/Backup目录中有服务器不存在的文件,则删除。 从而保持客户端与服务器的数据同步。 注意: 谨慎使用--delete选项,最好不要把已经有重要数所据的目录当做客户端的备份目录,否则会误删除重要数据。 如果用客户端的备份数据去恢复服务器,可使用下列的命令: #rsync–avzPO/Backup/rsync@Server: : CriticalData 这里需要将rsync.conf中readonly设置为false,同时使/CirticalData目录具有写权限。 注意: 也可调用--delete选项来保持客户端与服务器端的数据同步。 在后面,将详细介绍rsync.conf的配置。 -O参数用于忽略目录的时间属性。 数据备份与同步的自动化实现 系统管理员必须执行的数据备份与同步任务大多牵涉到某种形式的系统配置,当管辖的任务比较庞大,数据量较多,但操作一样且有固定周期时,采用自动化脚本就成为必然。 尤其是为多个操作系统提供支持时。 要实现自动化操作,脚本编制是必须掌握的基本技能。 一个脚本由一系列命令构成,这些命令负责执行各种各样的任务。 系统管理员在重复执行了几遍类似的命令后,通常就能准确地掌握要点,并希望利用脚本,将重复性的工作交给计算机去做。 常用的脚本语言有Shell,Perl,Tcl/Expect等。 实用命令的自动化实现 本文的示例主要是通过Shell来实现的。 Shell是一种“解释性”语言,列出了管理员通过键盘敲入的相同命令,并且每次执行一次这样的命令。 例如执行一条简单的tar命令,可以使用下面的一个简单的脚本。 清单2.tar自动化示例脚本 #! /bin/sh tar-czvfbackup.tar.gz/CriticalData/ 如果我们想用其它的命令来实现数据备份,可以将以上的示例脚本中的命令部分替换掉,例如执行一条简单的cpio命令,可替换为下面一个简单的脚本。 清单3.mksysb自动化示例脚本 #! /bin/sh find/CriticalData/-depth|cpio-ov>backup.cpio 事实上我们可以通过shell中一些变量设置,条件测试以及流程控制语句来实现不同的需求。 例如,管理员希望能够在周一到周日,通过backup命令做多级备份。 我们可以设置Level变量,当变量满足不同条件时,就可以实现多级备份。 清单4.backup自动化示例脚本 #! /bin/sh //判读当前系统的日期是星期几 DATE=`date|awk'{printf$1}'` case$DATEin 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系统的crontab功能。 rsync的自动化实现 由于rsync在数据备份与同步上的优秀表现,本文将主要介绍用rsync来实现数据的备份与同步。 要使用rsync,只需要将主服务器安装并配置成为rsync服务器,将另外一台装有rsync的机器作为备份客户端。 在对rsync服务器配置结束以后,就可以在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。 在客户端创建自动化脚本,并启用cron服务,就可以定期对主服务器的数据进行自动备份与同步。 1.在服务器端手动创建rsync配置文件 创建rsync.conf作为服务器配置文件 假设我们在服务器端,设置需要备份的目录/CriticalData,但不需要备份/CriticalData目录下的Common目录。 先创建一个目录,用于存放rsync相关配置文件 #mkdir/etc/rsyncd 创建rsync.conf #touch/etc/rsyncd/rsyncd.conf 编辑rsyncd.conf 清单5.rsyncd.conf配置文件 清单5.rsyncd.conf配置文件 gid=users readonly=true usechroot=true transferlogging=true logformat=%h%o%f%l%b logfile=/var/log/rsyncd.log pidfile=/var/run/rsyncd.pid secretsfile=/etc/rsyncd.secrets hostsallow=192.168.0.0/255.255.255.0 maxconnections=5 timeout=300 motdfile=/etc/rsyncd/rsyncd.motd [CriticalData] path=/CriticalData list=true ignoreerrors comment=ThisisCriticalData authusers=rsync secretsfile=/etc/rsyncd/rsyncd.secrets exclude=Common/ rsync.conf中主要分为全局变量和模块两部分。 模块用[]表示,模块之前的为全局变量。 重要参数说明: path 指定该模块所定义的备份目录的路径,该参数是必须指定的。 exclude 用来指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到exclude列表中。 这等同于在客户端命令中使用--exclude参数。 一个模块只能指定一个exclude选项。 但是需要注意的一点是该选项有一定的安全性问题,客户端很有可能绕过exclude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。 authusers 该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。 这里的用户不一定是客户端存在的用户。 如果"authusers"被设置,那么客户端发出对该模块的连接请求时,需要对用户身份进行验证。 用户的名和密码以明文方式存放在"secretsfile"选项指定的文件中。 默认情况下无需密码就可以连接模块(也就是匿名方式)。 创建rsync.secrets作为用户密码文件 #touch/etc/rsyncd/rsyncd.secrets #chmod600/etc/rsyncd/rsyncd.secrets 编辑rsyncd.secrets,格式为“用户: 密码” rsync: passwd 注意: rsync是服务器上存在的用户,同时将/CriticalData的使用者改为rsync #chown-Rrsync/CriticalData/ 创建rsync.motd作为登录消息文件 此文件是选择性配置文件,也可以不创建。 #touch/etc/rsyncd/rsyncd.motd 编辑rsyncd.conf ============================ ThisisCriticalDataServer ============================= 2.启动rsync 将rsync启动 #/usr/bin/rsync--daemon--config=/etc/rsyncd/rsyncd.conf 可以将这个命令写入/etc/rc.d/rc.local中,当系统启动时,自动运行rsync。 3.创建脚本 在客户端创建一个/root/rsync/目录用来存放自动化脚本和其它文件。 创建/root/rsync/rsync.sh自动化脚本,保证权限为755。 清单6.rsync自动化示例脚本 #! /bin/sh exportRSYNC_PASSWORD=passwd exportPATH=$PATH: /bin: /usr/bin: /usr/local/bin //设置远程服务器与需要备份的目录 SERVER=rsync@Server DIR=CriticalData //设置客户端上的用于备份的目录 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/$INCREMENTDIR--ignore-errors" //确保客户端上的用于备份的目录存在 install-d$BDIR/$BASE //实现数据备份与同步,将日志邮寄给root用户 run_rsync() { echo"==========Beginrsync: `date`===========">>$LOG2>&1 du-s$BDIR/*>>$LOG2>&1 rsync$OPTS$SERVER: : $DIR$BDIR/$BASE>>$LOG2>&1 echo"==========Endrsync: `date`===========">>$LOG2>&1 mailroot-s"BackupReport"<$LOG rm$LOG } //条件测试,运行程序 if[-f$EXCLUDES];then if
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UnixLinux 系统自动化管理 数据备份与同步篇 系统 自动化 管理 数据 备份 同步
![提示](https://static.bdocx.com/images/bang_tan.gif)