2.2.1安装cwRsync_4.1.0_Installer_client
3、方式二:麒麟系统下Rsync+inotify实时监控推送文件
1、同步方式介绍
Rsync 可以远程同步数据,将一台服务器上的文件,同步到另一台上,支持异步同步(即不会全部覆盖,先判断已存在的数据和新数据的差异,数据不同时才会进行同步工作,可以大大减少同步资源消耗)
支持从服务器拉取和推送两种方式,方法一支持linux和windows环境。方法二支持linux和麒麟系统(因目前未找到支持windows的inotify,所以目前不支持)
具体如下图:
2、方式一:windows下Rsync实时同步部署
2.1服务器 A上安装Rsync服务
2.1.1、安装服务
下载安装包,cwRsyncServer_4.1.0_Installer.rar,解压后双击exe进行安装,下一步安装(一般使用默认安装位置即可C:\Program Files (x86)\ICW)
安装过程中创建windows系统Rsync用户和密码使用文件记录下
2.1.2、配置服务及密码
1)进入安装目录C:\Program Files (x86)\ICW修改conf文件
strict modes = false:不验证用户密码,
hosts allow=**** :允许访问的ip地址
port=28873 :client端访问端口
pid = 0,uid = 0:指定匿名访问。
[data] :指定模块名称,后续同步时通过模块名称进行同步对应的文件数据
Path 目录下的共享文件位置,E:\test需要写成/cygdrive/e/test
read only :只允许客户端读
auth users : 指访问userdata的用户名
secrets file :拉取文件用户名对应的密码文件。/cygdrive/e/test/rsyncd.secrets
2)授权
2.1.3、创建密码文件 rsyncd.secrets
创建 rsyncd.secrets文件,设置用户密码,存放路径与conf中一致(e/test/rsyncd.secrets)
userdata:123456
给rsyncd.secrets文件授权给SvCWRSYNC用户(cwRsync安装时创建的系统用户)
启动服务
至此,服务端配置完成
2.2服务器 B上执行同步文件
2.2.1安装cwRsync_4.1.0_Installer_client
2.2.2手动执行文件同步
1、使用telnet 验证客户端与服务端是否通顺
2、建立密码文件rsync_db.ps存放在e/data/路径下,文件内容如下:
123456
3、打开Dos命令窗口,进到Rsync客户端安装目录的bin目录下,如:C:\Program Files\cwRsync\bin\。输入以下命令,开始进行同步:,同步化在设置的目录下可以看到新文件。
rsync -vzrtopg --port=28873 --progress --delete userdata@10.7.*.*::test /cygdrive/e/data/test --password-file=/cygdrive/e/data/rsync_db.ps
--port=28950 # 端口
-vzrtopg --progress # 显示同步过程详细信息
--delete # 从客户端目录中删除与服务端目录中不同的数据,保证两边数据完全一致
userdata #连接服务器A的用户
10.7.*.* #服务端A 的ip地址
/cygdrive/e/data/test #客户端B 存放同步文件的目录
--password-file=/cygdrive/e/data/rsync_db.ps 设置client连接用户 userdata的密码文件位置
2.2.3依赖windows定时任务,设置定时自动同步
1、建立cwrsync_updata.bat,内容如下
set rsynclog #设置log存放路径
set RSYNC_home #Rsync 客户端安装目录
2、在Window中添加任务计划
通过定时任务,设置每分钟执行一次 步骤1中的bat文件,达到实时同步的效果
3、方式二:麒麟系统下Rsync+inotify实时监控推送文件
3.1服务器 A上配置inotify服务
1、build inotify
#解压inotify到指定目录
/home/share/inotify-tools/inotify-tools-3.14
#执行预编译
./configure --prefix=/usr/local/inotify --build=arm-linux
#编译
make
make install
2、配置实时监控
#建立文件backup_inotifyall.sh
#!/bin/bash
host=10.7.*.*
src=/Data/
des=front
password=/etc/rsyncd/rsync.password
user=userdata
inotify=/usr/local/inotify
${inotify}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \
| while read files
do
rsync -avzP --delete --port=18873--timeout=100 --password-file=${password} $src $user@$host::$des
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done
host#服务器B的ip地址
src#需要监控的目录
des#服务器B的同步模块名称
password#密码文件存放123456
userdata#器B允许同步的用户
port#服务器Brsync的ip地址
3、文件授权
chmod 764 backup_inotifyall.sh
4、启动sh文件
sh backup_inotify.sh &
5、运行没有问题,需要使用长久化运行
nohup/home/share/bak/backup_inotifyall.sh &
3.2服务器 B上配置Rsync服务
系统自带Rsync 所以不需要重新build
1、建立rsync.password 文件,存放允许访问的用户和密码
userdata:123456
2、给文件授权
chmod 600 /etc/rsyncd/rsync.password
3、配置rsyncd.conf
vi /etc/rsyncd.conf
#rsyncd.conf文件具体配置项如下,配置参数可参考windows
hosts allow = 10.7.*.*
port = 28873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
uid = 0
gid = 0
[front]
path = /Data/
comment = Hello My Dear!
ignore errors
read only = no
write only = no
hosts deny = *
hosts allow =10.7.*.*
list = false
uid = 0
gid = 0
auth users = userdata
secrets file = /etc/rsyncd/rsync.password
#启动resync
rsync --daemon
至此服务器A中/Data/ 文件夹下有文件的增删改 ,inotify监控到有变化,执行rsync的命令,将变化的文件同步到服务器B