UnixLinux系统自动化管理数据备份与同步篇.docx

上传人:b****8 文档编号:9321170 上传时间:2023-02-04 格式:DOCX 页数:18 大小:34.88KB
下载 相关 举报
UnixLinux系统自动化管理数据备份与同步篇.docx_第1页
第1页 / 共18页
UnixLinux系统自动化管理数据备份与同步篇.docx_第2页
第2页 / 共18页
UnixLinux系统自动化管理数据备份与同步篇.docx_第3页
第3页 / 共18页
UnixLinux系统自动化管理数据备份与同步篇.docx_第4页
第4页 / 共18页
UnixLinux系统自动化管理数据备份与同步篇.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

UnixLinux系统自动化管理数据备份与同步篇.docx

《UnixLinux系统自动化管理数据备份与同步篇.docx》由会员分享,可在线阅读,更多相关《UnixLinux系统自动化管理数据备份与同步篇.docx(18页珍藏版)》请在冰豆网上搜索。

UnixLinux系统自动化管理数据备份与同步篇.docx

UnixLinux系统自动化管理数据备份与同步篇

Unix/Linux系统自动化管理:

数据备份与同步篇

前言

数据是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[-d$BDIR];then

run_rsync

else

echo"cantfind$BDIR";exit

fi

else

echo"cantfind$EXCLUDES";exit

fi

执行完rsync.sh后,可以查看/Backup目录来检查数据的正确性。

将有两种目录,一个是Current目录,用于存放当前服务器端备份和同步后的数据。

在脚本运行过程中,进行增量传输。

另外还有一个类似于2009-06-16的目录,用于存放已在服务器端删除的增量数据。

目录的名称将根据脚本执行的日期定义。

#pwd

/B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1