windwos与linux基于inotify实现文件实时同步实战记录

cwRsync是基于cygwin平台的rsync软件包,支持windows对windows、windows对Linux、Linux对windows高效文件同步。由于CwRsync已经集成了cygwin类库,因此安装的时候可以省去cygwin包。Cwrsync还集成了OpenSSH for windows,可以实现Linux 下Rsync一模一样的操作。使用 cwRsync 来同步文件后,只需要对一台主服务器进行文件修改,其他镜像服务器可以自动同步,包括文件的更新、删除、重命名等。

正好符合我现在的需求

cwRsync分为付费版和免费版两种,我们只需要使用免费版即可,在官方网站上面下载cwRsync的客户端版本和服务器版本。

请在附件中下载

客户端版本:cwRsync 4.0.5 Installer

服务器版本:cwRsyncServer 4.0.5 Installer

这里我只需要让win做服务端,客户端rsync linux默认就有

查看服务器是否安装rsync

# rpm -aqrsync

rsync-3.0.9-15.el7.x86_64

如果没有可以yum装下

# yum installrsync -y

1.安装:

对于cwRsync的安装没有什么好说的,我选择的全部都是默认安装,对于服务器版本的安装,这里再多加一句,在安装过程中会提示要求我们输入Serviceaccount以及密码,如果我们不指定的话会使用SvcCWRSYNC这个账户,密码是随机生成的,所以要记住这个密码。但是在我后面的配置中,并没有用到这个Serviceaccount。

密码保持默认,占时我还没发现这个密码所用之地

2.配置:

cwRsync的架构很简单,有一个Server和多个Client组成。安装server版的cwRsync以后,在服务器上面启动cwRsync服务,然后在客户端上面执行文件同步命令即可实现文件同步功能。如果我们将文件同步命令添加到windows计划任务当中,就可实现定义同步的功能。

2.1服务器端配置

  在cwRsync的安装目录下,可以找到一个rsyncd.conf的配置文件,下面我根据自己实际的业务需求来讲名配置文件的修改方法

下面我将自己服务器端配置文件贴出来,在配置文件的下端,我们看到[user]标签,这就是我们需要同步的user目录,这里需要注意的就是对于文件目录名称的变更。在windows系统下,目录地址为c:\work的,在我们的配置文件path中,需要修改为/cygwin/c/work。同样的,我们的当前想要同步的目录是D:\xxx\user,那么我就写成path =/cygdrive/d/xxx/user。其他的配置就按照给出的模板来配置即可。

配置文件

配置文件内容:

use chroot = false
strict modes = false
log file = rsyncd.log
port = 873
uid=0
gid=0
hosts allow = 10.172.191.172
 
[user]
path = /cygdrive/d/rqt/user
read only = false
transfer logging = yes
list = no
auth users = rsync_backup
secrets file = etc/rsync.password
 
[static_3]
path = /cygdrive/d/rqt/static_3
read only = false
transfer logging = yes
list = no
auth users = rsync_backup
secrets file = etc/rsync.password
 
[contract]
path = /cygdrive/d/rqt/contract
read only = false
transfer logging = yes
list = no
auth users = rsync_backup
secrets file = etc/rsync.password

2.2创建密码文件:

2.3启动服务

2.4查看服务是否启动

3.LINUX端配置

3.1Linux端创建密码文件,并修改权限为600

3.2命令测试

客户端推往服务器:

rsync -avzp /etc/hosts [email protected]::test

客户端向服务端拉去文件:

rsync -avzp [email protected]::test/root/test

3.3 同步数据老提示错误 uid4294967295 (-1) is impossible to set on  查资料说是软件bug··· 但是数据同步是不受到影响的。

解决方法:

在server端添加一行参数:

fake super= yes

重启rsync服务即可。再同步就不会出现错误信息了。

3.4 安装inotify

    

安装

前提 rsnyc 服务配置成功,可以正常在客户端正常推送拉取数据,然后才能配置inotify

Inotify在客户端配置 ,内核必须在2.6以上

必须有以下3个文件

[[email protected] ~]# ll/proc/sys/fs/inotify/

total 0

-rw-r--r-- 1 root root 0 Apr 17 14:45 max_queued_events   #监控最大值

-rw-r--r-- 1 root root 0 Apr 17 14:45 max_user_instances

-rw-r--r-- 1 root root 0 Apr 17 14:45 max_user_watches

max_queued_events  改大, 例如:50000000

max_user_instances 改大, 例如:320000

max_user_watches   改大,例如:8192

下载源码包

inotify-tools下载地址:

http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

cd /usr/local/src

tar zxvf inotify-tools-3.14.tar.gz  #解压

cd inotify-tools-3.14 #进入解压目录

./configure--prefix=/usr/local/inotify-tools-3.14  #配置

make #编译

make install  #安装





3.5 同步脚本

脚本:

#!/bin/bash
host01=10.162.222.27 
src=/project/rqt/contract
dst=contract
user=rsync_backup
rsync_passfile=/etc/rsync.password
inotify_home="/usr/local/inotify-3.14"
 
if [ ! -e"$src" ] || [ ! -e"${rsync_passfile}" ]|| [ ! -e"${inotify_home}/bin/inotifywait" ]|| [ ! -e"/usr/bin/rsync" ];
then
      echo "Check File and Folder"
      exit 9
fi
 
${inotify_home}/bin/inotifywait-mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e close_write,create,attrib$src | while read file
do
      cd $src && rsync -aruz -R ./--timeout=100 [email protected]$host01::$dst --password-file=${rsync_passfile}>/dev/null 2>&1
      sleep 10
      cd $src && rsync -aruz -R [email protected]$host01::$dst --password-file=${rsync_passfile} ./ >/dev/null2>&1   
done
exit 0

解释:

host01:要同步机器的Ip

src:要同步的目录

dst:目标主机模块名

user:同步用户

rsync_passfile:密码文件,需要和目标主机密码文件一个,注意这个是在本机,只存密码

inotify_home:inotify目录

3.5 运行:sh sync.sh &

4 测试:

4.1 在win端创建testA.txt

4.2 在linux端创建testB.txt

再ls看下win下的testA已经同步过来了

4.3 然后再回到win端,会发现文件testB.txt已经同步过来

4.4 故障排除:http://53cto.blog.51cto.com/9899631/1771826

时间: 2024-11-08 01:11:29

windwos与linux基于inotify实现文件实时同步实战记录的相关文章

Rsync+inotify实现文件实时同步

数据备份.文件备份是运维.DBA等岗位最熟悉不过的话题,这里不介绍数据库的备份,简单介绍一下文件同步工具,这样的工具有很多,Windows环境下有Goodsync.FreeFileSync等,Linux下rsync.unison等,常用的实时同步,是几种工具的组合,经过组合的工具达到文件实时同步的效果. 一.常用实时同步方案 1.NFS网络文件系统 该方案是分布式架构中,解决不同节点对同一资源访问的问题,搭建NFS服务器,将其挂载在不同的节点,每个节点将公用的数据存储在NFS服务器上,实现文件的

基于sersync海量文件实时同步

今天我们主要讲解海量文件实时同步,最近涉及到数百万图片数据迁移,为了使图片数据快速迁移,并保证数据数据的一致性,无缝切换.尝试了多种方案. 方案1:rsync+inotify同步,最先想到的是此方案,以前在多台服务器间的做代码同步就常用此方法,因为代码文件数并不多.现在用在海量文件同步时,其缺陷也暴露出来,分析原理后,我们知道,每次新增数据都会做一次全量同步,在数据量不大的情况下同步挺快,但当文件数达到数百万就相当慢,每次对比整个目录的数量庞大的文件:第二,inotify监听的事件也非常多,创建

rsync+inotify实现文件实时同步-步骤详解

实验拓扑(centos7下):192.168.80.181 服务器端(主机名www.aa.com)192.168.80.182 客户端(主机名www.ab.com)1.使用SSH源:安装rsync,服务端和客户端同时安装,只使用客户端命令就OK了.systemctl stop firewalldsetenforce 0yum install -y rsync---以上三句在服务器端和客户端都要执行---------rsync -avz [email protected]:/tmp/ /opt/

基于rsync+inotify实现文件实时同步

rsync英文名remote  synchronization,可使本地和远程两台主机之间的数据快速复制同步镜像 远程备份的功能,rsync在拷贝时候会先比较源数据跟目标数据,不一致才复制,实现增量拷贝 监听于873/tcp rsync有许多选项: -n: 在不确定命令是否能按意愿执行时,务必要事先测试:-n可以完成此功能: -v: --verbose,详细输出模式 -q: --quiet,静默模式 尽可能输出少 -c: --checksum,开启校验功能,强制对文件传输进行校验 -r: --r

Linux-rsync+inotify目录文件实时同步备份

1.环境介绍 192.168.1.2 (rsync+inotify)-----------FTP 192.168.1.3 (rsync)---------------------backup 实验目的: 实时自动同步:192.168.1.2 ------->192.168.1.3到目录:/data/ftpdata ; 一.FTP服务器(rsync+inotify) 1.准备软件包 [[email protected] ~]# mkdir /data/ftpdata [[email protect

【linux教程】inotify用法简介及结合rsync实现主机间的文件实时同步

一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改.新增.删除等,并可以将相应的事件通知给应用程序.该机制由著名的桌面搜索引擎项目beagle引入用于替代此前具有类似功能但存在诸多缺陷的dnotify. inotify既可以监控文件,也可以监控目录.当监控目录时,它可以同时监控目录及目录中的各子目录及文件的.此外,inotify

inotify用法简介及结合rsync实现主机间的文件实时同步

一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改.新增.删除 等,并可以将相应的事件通知给应用程序.该机制由著名的桌面搜索引擎项目beagle引入用于替代此前具有类似功能但存在诸多缺陷的dnotify. inotify既可以监控文件,也可以监控目录.当监控目录时,它可以同时监控目录及目录中的各子目录及文件的.此外,inotify

5、Sersync实时同步实战

1.实时同步概述 1.什么是实时同步, 只要当前目录发生变化则会触发一个事件,事件触发后将变化的目录同步至远程服务器. 2.为什么要实时同步, 保证数据的连续性, 减少人力维护成本, 解决nfs单点故障 3.实时同步实现原理, 实时同步需要借助 Inotify通知接口,用来监控目录的变化,如果监控的目录发生变更.则触发动作,这个动作可以是进行一次同步操作,或其他操作. 4.实时同步工具选择, 有sersync(√).inotify+rsync,通常我们会选择 sersync,因为 sersync

linux下rsync+inotify实现服务器之间文件实时同步

先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所