• linux设置rsync+inotify实时同步文件


    linux设置rsync+inotify实时同步文件

     
    应用场景:
    同步接收方:test01
    接收目录:/opt/software/test/a/
    同步发起方:test02
    同步目录:/opt/software/test/a/
     
    在test02的 /opt/software/test/a/ 目录下做新增、创建、删除、移动操作都会同步到test01的/opt/software/test/a/目录
       www.2cto.com  
    第一步:安装rsync(test01和test02都要安装)
    yum install rsync
     
    第二步:安装inotify(同步发起方test02安装)
    解压inotify
     
    [root@test02 software]# tar zxvf inotify-tools-3.14
    [root@test02 inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify
    [root@test02 inotify-tools-3.14]# make
    [root@test02 inotify-tools-3.14]# make install
     
    第三步:配置rsync(同步接收方test01)
    在/etc 目录下新建rsyncd.conf,内容如下
    pid file=/var/run/rsyncd.pid
    port=873
    #test01所在ip地址
    address=192.168.1.114
    uid=root
    gid=root
    use chroot=yes
    #test02 所在ip地址
    hosts allow=192.168.1.107
    hosts deny=*
    max connections=5
    motd file=/etc/rsyncd.motd
    log file=/var/log/rsync.log
    #transfer logging=yes
    log format=%t %a %m %f %b
    syslog facility=local3
    timeout=300
    read only=no
    write only=no
    [ggly]
    path=/opt/software/test/a/
    auth users=owenzhang
    list=yes
    igonre errors
    secrets file=/etc/rsyncd.secrets
    comment=ggly rsyc files
       www.2cto.com  
    在/etc 目录下新建 rsyncd.secrets并赋予600权限内容如下
    #用户:密码,密码不一定要和linux用户的密码一致,用户必须是linux用户
    owenzhang:123123
     
    在/etc目录下新建 rsyncd.motd,内容随便写,rsync的欢迎信息
     
    运行test01的rsync
    service xinetd start
    没有安装xinetd 可以使用 yum install xinetd 来安装
     
    源码安装启动方法
     ./rsync --daemon --config=/home/work/program/tools/rsync/conf/rsyncd.conf
     
    第四步:配置inotify(同步发起方test02)
    新建文件 gglyrsync.sh 并赋予执行权限,文件名、位置随便,内容如下
       www.2cto.com  
    #!/bin/bash
    #同步接收方ip
    client=192.168.1.114
    src=/opt/software/test/a/
    #同步接收方配置的rsync模块名
    dest=ggly
    #同步接收方鉴权时的用户
    user=owenzhang
    /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,move,attrib $src | while read files
    do
    /usr/bin/rsync -vzrtopgq --delete --progress --password-file=/opt/software/rsyncpasswd $src $user@$client::$dest
    done
     
    在/opt/software/目录下新建rsyncpasswd文件,内容为test01中rsyncd.secrets中owenzhang对应密码即123123并赋予600权限
     
    最后运行 gglyrsync.sh 就可以了。
     
    如果出现
    rsync: failed to connect to 10.237.2.27 (10.237.2.27): Connection refused (111)
    rsync error: error in socket IO (code 10) at clientserver.c(122) [sender=3.0.9]
    一个说明你服务端没有启动,一个说明你更换了端口,执行上面命令的时候请指定端口 --port=
     
     
    Rsync configure:
    配置一:
    ignore errors
    说明:这个选项最好加上,否则再很多crontab的时候往往发生错误你也未可知,因为你不可能天天去看每时每刻去看log,不加上这个出现错误的几率相对会很高,因为任何大点的项目和系统,磁盘IO都是一个瓶颈
     
    Rsync error:
    错误一:
    @ERROR: auth failed on module xxxxx
    rsync: connection unexpectedly closed (90 bytes read so far)
    rsync error: error in rsync protocol data stream (code 12) at io.c(150)
    说明:这是因为密码设置错了,无法登入成功,检查一下rsync.pwd,看客服是否匹配。还有服务器端没启动rsync 服务也会出现这种情况。

    错误二:
    password file must not be other-accessible
    continuing without password file
    Password:
    说明:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd

    错误三:
    @ERROR: chroot failed
    rsync: connection unexpectedly closed (75 bytes read so far)
    rsync error: error in rsync protocol data stream (code 12) at io.c(150)
    说明:这是因为你在 rsync.conf 中设置的 path 路径不存在,要新建目录才能开启同步

    错误四:
    rsync: failed to connect to 218.107.243.2: No route to host (113)
    rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
    说明:防火墙问题导致,这个最好先彻底关闭防火墙,排错的基本法就是这样,无论是S还是C,还有ignore errors选项问题也会导致
     
    错误五:
    @ERROR: access denied to www from unknown (192.168.1.123)
    rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
    rsync error: error in rsync protocol data stream (code 12) at io.c(359)
    说明:此问题很明显,是配置选项host allow的问题,初学者喜欢一个允许段做成一个配置,然后模块又是同一个,致使导致

    错误六:
    rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(244) [generator=2.6.9]
    rsync error: received SIGUSR1 (code 19) at main.c(1182) [receiver=2.6.9]
    说明:导致此问题多半是服务端服务没有被正常启动,到服务器上去查查服务是否有启动,然后查看下 /var/run/rsync.pid 文件是否存在,最干脆的方法是杀死已经启动了服务,然后再次启动服务或者让脚本加入系统启动服务级别然后shutdown -r now服务器

    错误七:
    rsync: read error: Connection reset by peer (104)
    rsync error: error in rsync protocol data stream (code 12) at io.c(604) [sender=2.6.9]
    说明:原数据目录里没有数据存在
  • 相关阅读:
    RTP/RTSP编程
    makefile
    VS 2010内存泄漏检测
    Linux Shell中捕获CTRL+C
    const
    Hdu 5344
    Hdu5762
    CF1200C
    CF1200B
    CF1200A
  • 原文地址:https://www.cnblogs.com/breg/p/3240928.html
Copyright © 2020-2023  润新知