系统环境:CentOS 6.3 rsync服务器

          windows server 2003 R2 cwRsync客户端

IP地址分别为:10.1.4.44服务器、10.1.4.42客户端

 

实现目的:

cwRsync客户端每天凌晨02:30钟自动同步Rsync服务端/data/share目录中的数据到D:\data目录

 

所需软件包:

rsync-3.0.9.tar.gz   cwRsync_4.0.5_Installer.zip

 

一、rsync服务器安装

rysnc的官方网站:http://rsync.samba.org可以从上面得到最新的版本。目前最新版是3.09

[root@server ~]#  tar xvf  rsync-3.0.9.tar.gz

[root@server ~]# cd rsync-3.0.9

[root@server rsync-3.0.9]# ./configure --prefix=/usr

[root@server rsync-3.0.9]# make

[root@server rsync-3.0.9]# make install  注:在用源码包编译安装之前,您得安装gcc等编译开具才行

 

二、 rsync服务器的配置文件rsyncd.conf

rsync的主要有以下三个配置文件:

rsyncd.conf(主配置文件)

rsyncd.secrets(密码文件)

rsyncd.motd(rysnc服务器信息)

 

服务器配置文件(/etc/rsyncd/rsyncd.conf),该文件默认不存在,请创建:

[root@server etc]# mkdir rsyncd  注:在/etc目录下创建一个rsyncd的目录,我们用来存放rsyncd.conf rsyncd.secretsrsyncd.mond文件

[root@server rsyncd]# touch rsyncd.conf  注:创建rsyncd.conf ,这是rsync服务器的配置文件

[root@server rsyncd]# touch rsyncd.secrets  注:创建rsyncd.secrets ,这是用户密码文件

[root@server rsyncd]# chmod 600 rsyncd.secrets  注:为了密码的安全性,我们把权限设为600

[root@server rsyncd]# ls -lh rsyncd.secrets 

-rw------- 1 root root 12 9  14 11:56 rsyncd.secrets

[root@server rsyncd]# touch rsyncd.motd

[root@server rsyncd]# ll

总用量 12

-rw-r--r-- 1 root root 643 9  14 11:55 rsyncd.conf

-rw-r--r-- 1 root root 172 9  14 11:58 rsyncd.motd

-rw------- 1 root root  12 9  14 11:56 rsyncd.secrets

 

配置编辑: rsyncd.conf rsyncd.secrets rsyncd.motd 文件;

 

1、配置rsyncd.conf文件

rsyncd.conf rsync服务器主要配置文件,我们来个简单的示例:

备份服务器上的/data/share目录下所有文件,手动添加内容如下:

[root@server ~]# vim /etc/rsyncd/rsyncd.conf

# Distributed under the terms of the GNU General Public License v2

# Minimal configuration file for rsync daemon

# See rsync(1) and rsyncd.conf(5) man pages for help

# This line is required by the /etc/init.d/rsyncd script

pid file = /var/run/rsyncd.pid 注:告诉进程写到 /var/run/rsyncd.pid 文件中

port = 873     注:指定运行端口,默认是873,您可以自己指定

address = 10.1.4.44       注:指定服务器IP地址

#uid = nobody  注:服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody

#gid = nobody  注:服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody

uid = root

gid = root

use chroot = yes

read only = yes

#limit access to private LANs

hosts allow=10.1.4.0/255.255.255.0

hosts deny=*

max connections = 5   注:客户端最多连接数

motd file = /etc/rsyncd/rsyncd.motd

#This will give you a separate log file

#log file = /var/log/rsync.log

#This will log every file transferred - up to 85,000+ per user, per sync

#transfer logging = yes

log format = %t %a %m %f %b

syslog facility = local3

timeout = 300

[samba_data]  注:模块

path =  /data/share   注:指定文件目录所在路径

list=no   注:list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes 。如果你不想列出来,就no ;如果是no是比较安全的,至少别人不知道你的服务器上提供了哪些目录。你自己知道就行了

ignore errors   注:忽略IO错误,详细的请查文档

auth users = root    注:认证用户是root  ,是必须在服务器上存在的用户

secrets file = /etc/rsyncd/rsyncd.secrets  注:密码存在rsyncd.secrets文件里

注: 关于 auth users 是必须在服务器上存在的真实的系统用户,如果你想用多个用户,那就以,号隔开;比如 auth users = root , user1

 

2、配置rsyncd.secrets文件

密码文件: rsyncd.secrets的内容格式

[root@server ~]# vim /etc/rsyncd/rsyncd.secrets

root:111111

user:111111

 

用户名:密码     注:root:111111

而我们在例子中rsyncd.secrets的内容如下类似的;在文档中说,有些系统不支持长密码,自己尝试着设置一下吧。另外 rsyncd.secrets文件权限对其它用户组是不可读的。如果你设置错了,可能rsync不工作。

注意:

1、将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功! 出于安全目的,文件的属性必需是只有属主可读。

#chown root.root rsyncd.secrets  #修改属主

#chmod 600 rsyncd.secrets       #修改权限

2、这里的密码值得注意,为了安全,你不能把系统用户的密码写在这里。比如你的系统用户 root 密码是 abcdefg ,为了安全,你可以让rsync 中的root 111111 。这和samba的用户认证的密码原理是差不多的;

 

3、配置rsyncd.motd 文件

它是定义rysnc 服务器信息的,也就是用户登录信息。比如让用户知道这个服务器是谁提供的等;类似ftp服务器登录时,我们所看到的提示信息……。 当然这在全局定义变量时,并不是必须的,你可以用#号注掉,或删除;我在这里写了一个 rsyncd.motd的内容为:

[root@server ~]# vim /etc/rsyncd/rsyncd.motd

  ++++++++++++++++++++++++++++++++++++++++++++++

  Welcome to use the mike.org.cn rsync services!

           2002------2012

  ++++++++++++++++++++++++++++++++++++++++++++++

 

三、启动rsync 服务器及防火墙的设置

1、启动rsync服务器

启动rsync 服务器相当简单,–daemon 是让rsync 以服务器模式运行;

[root@server ~]#/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

注: 如果你找不到rsync 命令,你应该知道rsync 是安装在哪了。比如rsync 可执行命令可能安装在了 /usr/local/bin目录;也就是如下的命令;

[root@server ~]#/usr/local/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

当然您也可以写一个脚本来开机自动启动rysnc 服务器,你自己查查文档试试,这个简单。因为我用slackware 也有一个类似的脚本。我感觉不如直接手工运行方面,或者把这个命令写入rc.local文件中,这样也一样能自动运行;

[root@server ~]# netstat -anp |grep :873

tcp    0    0 10.1.4.44:873       0.0.0.0:*           LISTEN      5696/rsync    

 

2 rsync服务器和防火墙

Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。

[root@server ~]#iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT

[root@server ~]#iptables -L  查看一下防火墙是不是打开了 873端口;

 

 

3 、在rsync 服务器上的所提供的同步内容

rsync服务器上查看提供了哪些可用的数据源。

[root@server ~]# rsync --list-only root@10.1.4.44::samba_data

++++++++++++++++++++++++++++++++++++++++++++++

Welcome to use the mike.org.cn rsync services!

                2002------2012

++++++++++++++++++++++++++++++++++++++++++++++

Password:

drwxr-xr-x        4096 2012/09/14 12:04:57 .

drwxrwxrwx        4096 2012/09/14 12:04:57 caiwu

drwxrwxrwx        4096 2012/09/14 12:24:54 jishu

drwxrwxrwx        4096 2012/09/14 12:22:11 public

drwxrwxrwx        4096 2012/09/14 12:04:57 yanfa

注: 前面是rsync 所提供的数据源,也就是我们在rsyncd.conf 中所写的[samba_data]模块。而“linuxsir home data”是由[samba_data]模块中的 comment = root home 提供的;为什么[samba_data] 数据源列出来呢?因为我们在[samba_data]中已经把list=yes

 

 

四、通过cwRsync客户端安装来同步数据

1、下载cwRsync客户端软件

下载地址:

http://jaist.dl.sourceforge.net/project/sereds/cwRsync/4.0.5/cwRsync_4.0.5_Installer.zip

 

2、安装cwRsync客户端

解压cwRsync_4.0.5_Installer.zip 双击打开cwRsync_4.0.5_Installer.exe

Next 下一步

I Agree 同意安装

Next

默认安装路径 C:\Program Files\cwRsync

Install 安装

Close 安装完成,关闭

 

3、测试是否与Rsync服务端通信成功

开始-运行-cmd

输入cd C:\Program Files\cwRsync\bin 回车

再输入telnet 10.1.4.44 873 回车

出现telnet界面,说明与Rsync服务端通信成功

备注 C:\Program Files\cwRsync\bin 是指cwRsync程序安装路径

 

4cwRsync客户端同步Rsync服务端的数据

D盘创建一个文件夹为:data

开始-运行-cmd,输入cd C:\Program Files\cwRsync\bin 回车

再输入

C:\Program Files\cwRsync\bin>rsync --port=873 -vzrtopg --progress --delete root@10.1.4.44::samba_data /cygdrive/d/data

                             

输入密码:111111   #回车

开始同步数据,等待执行完成,可以打开D:\data Rsync服务端/data/share目录中的数据对比一下,查看是否相同

说明:

d/data 代表D:\data

samba_data 代表/etc/rsyncd/rsyncd.conf文件中自定义的模块名称comment = samba_data

10.1.4.44 #Rsync服务端IP地址

yanghw #执行数据同步的用户

--port=873 #端口

-vzrtopg --progress #显示同步过程详细信息

--delete #cwRsync客户端D:\data目录中删除与Rsync服务端/data/share目录中不相同的数据,即保证两边的数据完全一致

 

5、在cwRsync客户端的任务计划中添加批处理脚本文件,每天凌晨02:30钟自动同步Rsync服务端/data/share目录中的数据到D:\data目录:

打开C:\Program Files\cwRsync\bin目录新建passwd.txt

输入111111

保存

继续在C:\Program Files\cwRsync\bin目录新建samba.bat

输入

@echo off

echo.

echo 开始同步数据,请稍等...

echo.

cd C:\Program Files\cwRsync\bin

rsync --port=873 -vzrtopg --progress --delete root@10.1.4.44::samba_data /cygdrive/d/data < passwd.txt

echo.

echo 数据同步完成

echo.

最后保存退出

 

6、添加批处理脚本到Windows任务计划

开始-设置-控制面板-任务计划

打开添加任务计划,下一步

浏览,选择打开C:\Program Files\cwRsync\bin目录里面的samba.bat

执行这个任务,选择每天,下一步

起始时间:02:30

运行这个任务:每天,下一步

输入Windows系统管理员的登录密码,下一步

完成!

CentOS Rsync服务端与Windows cwRsync客户端实现数据同步完成!