您的位置:首页 > 运维架构 > Linux

CentOS Rsync服务端与Windows cwRsync客户端实现数据同步 推荐

2012-10-10 13:02 465 查看
系统环境: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.secrets、rsyncd.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程序安装路径

4、cwRsync客户端同步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客户端实现数据同步完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息