采用rsync实现两台solaris服务之间的文件同步

来源:互联网 发布:ios gif制作软件 编辑:程序博客网 时间:2024/05/20 01:37

本文针对 Sun Solaris 5.9 版本,其他版本或其他unix 服务器仅具有参考价值

对于 Windows 服务器之间的文件同步,也可以采用rsync ,但要使用 cwrsync 工具,请从 internet 上搜索资料。

工具:

rsync :在unix 平台下广泛采用的同步软件,免费使用,目前最新版本是 2.6.6

crontabsolaris 平台上的定时任务管理器

描述:

rsync 同时安装到Server AServer B

Server A 上,rsync 作为守护进程运行,通过配置,可以使得 Server A 上的某些目录被 rsync 发布。

Server B 上,rsync 作为命令行工具运行,可以从运行 rsync 守护进程的另一台服务器( Server A )上将所发布的目录同步到Server B

Server B 上配置定时任务,以便在指定的时间运行同步命令。

步骤:

1、  Server AServer B 上安装 rsync 软件:

a)         http://www.sunfreeware.com/programlistsparc9.html上查找 rsync 的最新版本,从 http://ftp.saix.net/pub/solaris-freeware/sparc/5.9/上下载找到的文件。 目前的最新版本是 2.6.6 ,文件在本文所附的目录中可以找到,名称:rsync-2.6.6-sol9-sparc-local.gz

b)        通过 ftp 命令将文件上传到 Server AServer 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 AServer 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 Arsync 发布目录的一个发布名,这样的小节可以根据需要存在多个。

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 –ztruvoglp --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 –ef|grep rsync                # 显示 rsync 进程

kill 888                               #888 要根据实际的进程号替换

c)        重新启动守候进程,执行:
/usr/local/bin/rsync –daemon

5、  更多的文件目录的同步之 ServerB 的操作,参见步骤 3

本文针对 Sun Solaris 5.9 版本,其他版本或其他unix 服务器仅具有参考价值

对于 Windows 服务器之间的文件同步,也可以采用rsync ,但要使用 cwrsync 工具,请从 internet 上搜索资料。

工具:

rsync :在unix 平台下广泛采用的同步软件,免费使用,目前最新版本是 2.6.6

crontabsolaris 平台上的定时任务管理器

描述:

rsync 同时安装到Server AServer B

Server A 上,rsync 作为守护进程运行,通过配置,可以使得 Server A 上的某些目录被 rsync 发布。

Server B 上,rsync 作为命令行工具运行,可以从运行 rsync 守护进程的另一台服务器( Server A )上将所发布的目录同步到Server B

Server B 上配置定时任务,以便在指定的时间运行同步命令。

步骤:

1、  Server AServer B 上安装 rsync 软件:

a)         http://www.sunfreeware.com/programlistsparc9.html上查找 rsync 的最新版本,从 http://ftp.saix.net/pub/solaris-freeware/sparc/5.9/上下载找到的文件。 目前的最新版本是 2.6.6 ,文件在本文所附的目录中可以找到,名称:rsync-2.6.6-sol9-sparc-local.gz

b)        通过 ftp 命令将文件上传到 Server AServer 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 AServer 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 Arsync 发布目录的一个发布名,这样的小节可以根据需要存在多个。

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 –ztruvoglp --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 –ef|grep rsync                # 显示 rsync 进程

kill 888                               #888 要根据实际的进程号替换

c)        重新启动守候进程,执行:
/usr/local/bin/rsync –daemon

5、  更多的文件目录的同步之 ServerB 的操作,参见步骤 3


转自:http://www.blogjava.net/lishengliang/archive/2006/04/26/43309.html