windows、linux(麒麟系统)下使用Rsync+inotify进行服务器间的文件同步

windows、linux(麒麟系统)下使用Rsync+inotify进行服务器间的文件同步 目录1、同步方式介绍2、方式一windows下Rsync实时同步部署2.1服务器 A上安装Rsync服务2.1.1、安装服务2.1.2、配置服务及密码2.1.3、创建密码文件 rsyncd.secrets2.2服务器 B上执行同步文件2.2.1安装cwRsync_4.1.0_Installer_client2.2.3依赖windows定时任务设置定时自动同步3、方式二麒麟系统下Rsyncinotify实时监控推送文件3.1服务器 A上配置inotify服务3.2服务器 B上配置Rsync服务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)\ICWRsyncwindows版下载地址安装过程中创建windows系统Rsync用户和密码使用文件记录下2.1.2、配置服务及密码1进入安装目录C:\Program Files (x86)\ICW修改conf文件strict modes false不验证用户密码,hosts allow**** 允许访问的ip地址port28873client端访问端口pid 0,uid 0指定匿名访问。[data]指定模块名称后续同步时通过模块名称进行同步对应的文件数据Path 目录下的共享文件位置E:\test需要写成/cygdrive/e/testread only只允许客户端读auth users 指访问userdata的用户名secrets file拉取文件用户名对应的密码文件。/cygdrive/e/test/rsyncd.secrets2授权2.1.3、创建密码文件 rsyncd.secrets创建 rsyncd.secrets文件设置用户密码存放路径与conf中一致e/test/rsyncd.secretsuserdata:123456给rsyncd.secrets文件授权给SvCWRSYNC用户cwRsync安装时创建的系统用户启动服务至此服务端配置完成2.2服务器 B上执行同步文件2.2.1安装cwRsync_4.1.0_Installer_client2.2.2手动执行文件同步1、使用telnet 验证客户端与服务端是否通顺2、建立密码文件rsync_db.ps存放在e/data/路径下文件内容如下1234563、打开Dos命令窗口进到Rsync客户端安装目录的bin目录下如C:\Program Files\cwRsync\bin\。输入以下命令开始进行同步:同步化在设置的目录下可以看到新文件。rsync -vzrtopg --port28873 --progress --delete userdata10.7.*.*::test /cygdrive/e/data/test --password-file/cygdrive/e/data/rsync_db.ps--port28950# 端口-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、方式二麒麟系统下Rsyncinotify实时监控推送文件3.1服务器 A上配置inotify服务1、build inotify#解压inotify到指定目录/home/share/inotify-tools/inotify-tools-3.14#执行预编译./configure --prefix/usr/local/inotify --buildarm-linux#编译makemake install2、配置实时监控#建立文件backup_inotifyall.sh#!/bin/bashhost10.7.*.*src/Data/desfrontpassword/etc/rsyncd/rsync.passworduseruserdatainotify/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 filesdorsync -avzP --delete --port18873--timeout100 --password-file${password} $src $user$host::$desecho ${files} was rsynced /tmp/rsync.log 21donehost#服务器B的ip地址src#需要监控的目录des#服务器B的同步模块名称password#密码文件存放123456userdata#器B允许同步的用户port#服务器Brsync的ip地址3、文件授权chmod 764 backup_inotifyall.sh4、启动sh文件sh backup_inotify.sh 5、运行没有问题需要使用长久化运行nohup/home/share/bak/backup_inotifyall.sh 3.2服务器 B上配置Rsync服务系统自带Rsync 所以不需要重新build1、建立rsync.password文件存放允许访问的用户和密码userdata:1234562、给文件授权chmod 600 /etc/rsyncd/rsync.password3、配置rsyncd.confvi /etc/rsyncd.conf#rsyncd.conf文件具体配置项如下配置参数可参考windowshosts allow 10.7.*.*port 28873pid file /var/run/rsyncd.pidlock file /var/run/rsync.locklog file /var/log/rsyncd.loguid 0gid 0[front]path /Data/comment Hello My Dear!ignore errorsread only nowrite only nohosts deny *hosts allow 10.7.*.*list falseuid 0gid 0auth users userdatasecrets file /etc/rsyncd/rsync.password#启动resyncrsync --daemon至此服务器A中/Data/ 文件夹下有文件的增删改 inotify监控到有变化执行rsync的命令将变化的文件同步到服务器B