采用rsync实现两台solaris服务之间的文件同步
目的:
通过技术手段,保持服务器
A
中的某些目录能够定期同步到服务器
B
中。
本文针对
Sun Solaris 5.9
版本,其他版本或其他
unix
服务器仅具有参考价值
对于
Windows
服务器之间的文件同步,也可以采用
rsync
,但要使用
cwrsync
工具,请从
internet
上搜索资料。
工具:
rsync
:在
unix
平台下广泛采用的同步软件,免费使用,目前最新版本是
2.6.6
crontab
:
solaris
平台上的定时任务管理器
描述:
rsync
同时安装到
Server A
和
Server B
。
在
Server A
上,
rsync
作为守护进程运行,通过配置,可以使得
Server A
上的某些目录被
rsync
发布。
在
Server B
上,
rsync
作为命令行工具运行,可以从运行
rsync
守护进程的另一台服务器(
Server A
)上将所发布的目录同步到
Server B
。
在
Server B
上配置定时任务,以便在指定的时间运行同步命令。
步骤:
1、
在
Server A
和
Server B
上安装
rsync
软件:
a)
从
[url]http://www.sunfreeware.com/programlistsparc9.html[/url]
上查找
rsync
的最新版本,从
[url]http://ftp.saix.net/pub/solaris-freeware/sparc/5.9/[/url]
上下载找到的文件。
目前的最新版本是
2.6.6
,文件在本文所附的目录中可以找到,名称:
rsync-2.6.6-sol9-sparc-local.gz
b)
通过
ftp
命令将文件上传到
Server A
和
Server B
,在个人电脑的
DOS
命令行上执行命令如下:
ftp 10.1.4.10
#
通过
ftp
连接服务器
10.1.4.10
bin
#
设定传输模式为二进制
put rsync-2.6.6-sol9-sparc-local.gz
#
将本地的文件上传到
10.1.4.10
bye
#
退出
ftp
程序
c)
在
Server A
和
Server B
上安装
rsync
,命令非常简单。在个人电脑的
DOS
命令行上执行下面的命令:
telnet 10.1.4.10
#
连接到
10.1.4.10
的终端界面
gzip -d rsync-2.6.6-sol9-sparc-local.gz
#
解压缩
gz
文件
pkgadd -d rsync-2.6.6-sol9-sparc-local.gz
#
安装
rsync
,遇到提问,按回车即可
/usr/local/bin/rsync --version
#
验证
rsync
安装是否完成
2、
在
Server A
上配置
rsync
服务
a)
编辑
rsync
的配置文件,
/etc/rsyncd.conf
,该文件在安装之初是没有的,需要自己建立。命令如下:
vi /etc/rsyncd.conf
#
编辑
/etc/rsyncd.conf
文件
文件内容如下:
uid = root #
以 root
身份访问文件目录
gid = root #
以 root
组身份访问文件目录
use chroot = yes #
可以使用 chroot
max connections = 1 #
最大连接数
syslog facility = local5
pid file = /var/run/rsyncd.pid
hosts allow = 10.1.4.13 #
只允许 10.1.4.13
访问
[grpdomain1] #
这是一个发布项,可以发布多个
path=/data/bea/user_projects/grpdomain1 #
发布的路径
read only=yes #
只读
list = yes #
允许列文件清单
comment=CenGRP3.0,Sinopec Portal Web Server. #
描述信息
文件在本文所附的目录中可以找到,名称:
ServerA\rsyncd.conf
[grpdomain1]
将作为其他服务器访问
Server A
的
rsync
发布目录的一个发布名,这样的小节可以根据需要存在多个。
b)
以守护进程方式启动
rsync
服务,命令如下:
/usr/local/bin/rsync --daemon&
c)
配置
rsync
自启动
vi /etc/rc3.d/S99Rsync
#
编辑
/etc/rc3.d/S99Rsync
chmod 700 /etc/rc3.d/S99Rsync
#
设置文件可以被属主(
root
)读写执行
文件内容如下:
/usr/local/bin/ rsync --daemon&
文件在本文所附的目录中可以找到,名称:
ServerA\S99Rsync
d)
验证服务
登陆
Server B
,执行命令:
/usr/local/bin/rsync -ztruvoglp --progress rsync://10.1.3.87
grpdomain1 CenGRP3.0,Sinopec Portal Web Server. #
执行结果
列出了
Server A
上面发布的目录的名称,说明配置成功
3、
在
Server B
上面设置自动获取
Server A
上的文件
a)
为了方便管理,把脚本文件放置在
Server B
上的特定目录下,下面的命令建立目录
/data/rsync
:
mkdir /data/rsync
b)
建立不同步文件的列表清单,清单文件名自己定义,该文件可选,如果不建立该文件,可以直接在后面步骤
C)
的脚本命令中使用参
--exclude
来直接指明。
vi /data/rsync/grpdomain1_exclude_file.list
文件每行表示一条,支持通配符,以发布项作为当前目录,文件内容如下:
grpdomain1.log* #
表示 /data/bea/user_projects/grpdomain1/grpdomain1.log*
不同步
newgrplog #
表示 /data/bea/user_projects/grpdomain1/newgrp
目录及子目录
home/logs
applications/cenep/WEB-INF/log
文件在本文所附的目录中可以找到,名称:
ServerB\grpdomain1_exclude_file.list
c)
建立同步脚本,可以根据需要建立多个脚本,每个脚本定义自己的调度计划(见后)
vi /data/rsync/rsync-grpdomain1.sh
#
编辑文件
chmod 700 /data/rsync/rsync-grpdomain1.sh
#
设置文件为仅属主可读些执行
文件内容如下,注意不要换行:
/usr/local/bin/rsync �Cztruvoglp --exclude-from=/data/rsync/grpdomain1_exclude_file.list --delete --progress rsync://10.1.4.10/grpdomain1 /data/bea/user_projects/grpdomain1
参数说明:
l
--ztruvoglp
,表示的是压缩传输、包含子目录、保持相同的权限等,可不理会。
l
--exclude-from
,指明从那个文件读取除外文件清单
l
--delete
,指明当文件被从
Server A
上删除后,也在
Server B
上删除
l
--progress
,是否在控制台上显示明细,如果在定时任务中运行,最好不增加该参数。
l
--exclude
,在命令行上直接指明那些文件不同步,格式
--exclude=”hgFF”
l
rsync://10.1.4.10:873/grpdomain1
,
同布的源,
873
是缺省端口,可忽略
l
/data/bea/user_projects/grpdomain1
同步目的地
d)
文件在本文所附的目录中可以找到,名称:
ServerB\rsync-grpdomain1.sh
e)
检测脚本是否正确,直接执行命令:
/data/rsync/rsync-grpdomain1.sh
f)
设定每天
0
点执行同步命令,执行下面的命令
crontab -e
#
编辑当前用户的调度表
显示的是一个
vi
界面,文件的内容可能如下,其中黑体部分是我们添加的:
#ident "@(#)root 1.20 01/11/06 SMI"
#
# The root crontab should be used to perform accounting data collection.
#
# The rtc command is run to adjust the real time clock if and when
# daylight savings time changes.
#
10 3 * * * /usr/sbin/logadm
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
#
每天的晚上 24
点运行同步脚本 ,
将 10
上的 grpdomain1
文件拷贝到本机
0 0 * * * /data/rsync/rsync-grpdomain1.sh
#10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___
起作用的是
0 0 * * * /data/rsync/rsync-grpdomain1.sh
,
其中前面由空格间隔开的五项分别代表分钟
小时
日
月
星期
g)
定时服务的启动和停止:
/etc/init.d/cron stop
#
停止定时服务
/etc/init.d/cron start
#
启动定时服务
4、
更多的文件目录的同步之
ServerA
的操作
a)
修改
ServerA
的
/etc/rsyncd.conf
,增加新的描述,参见
[grpdomain1]
的描述
b)
停止
Server A
上的
rsync
守候进程,命令:
ps �Cef|grep rsync
#
显示
rsync
进程
kill 888
#888
要根据实际的进程号替换
c)
重新启动守候进程,执行:
/usr/local/bin/rsync �Cdaemon
5、
更多的文件目录的同步之
ServerB
的操作,参见步骤
3
参考资料:
1、
rsync
�Y料同步
.mht