首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    inotify-rsync文件实时同步问题记录

    如图分析原因:通过ftp或者其他客户端上传一个稍大点的文件到文件同步监控目录下,inotifywait会实时监控到此目录下该文件的创建及修改,此时上传文件对文件修改可能是每1024个字节一次写入(可能更多,根据写文件客户端而定),因此在一定时间内造成了大量的并发,因为每次修改都会触发inotifywait检测到MODIFY类型的文件操作,同时也会调用rsync传输工具对该文件进行传输,在大量并发的情况下,对该文件的文件传输也会产生大量并发的传输,会造成io阻塞。 修改方案:在正常对文件的操作下,都会有CLOSE_WRITE,因此我们不需要让inotifywait监控MODIFY类型的事件,就不会触发大量并发的文件传输。 附上部分文件同步监控shell代码:

    03

    rsync+inotify实现触发式远程实时同步

    在Linux平台下我们可以利用2.6内核的inotify监控文件系统机制,通过inotify-tools来实现实时同步了。 具体操作如下: 1.安装所需软件 目前各大Linux发行版本都已经具有了rsync与inotify-tools的软件包,推荐通过RPM,yum,apt-get等方式进行安装。 RHEL: [root@server1 ~]# rpm -ivh rsync-* [root@server1 ~]# rpm -ivh inotify-tools-* CentOS: [root@server1 ~]# yum install rsync inotify-tools Ubuntu: [root@server1 ~]# apt-get install rsync inotify-tools 采用源码方式安装的步骤如下: [root@server1 ~]# wget ftp://ftp.samba.org/pub/rsync/rsync-3.0.8.tar.gz [root@server1 ~]# tar xzvf rsync-3.0.8.tar.gz [root@server1 ~]# cd rsync-3.0.8 [root@server1 ~]# ./configure [root@server1 ~]# make [root@server1 ~]# make install [root@server1 ~]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz [root@server1 ~]# tar xzvf inotify-tools-3.14.tar.gz [root@server1 ~]# cd inotify-tools-3.14 [root@server1 ~]# ./configure [root@server1 ~]# make [root@server1 ~]# make install 2.配置ssh key信任 建议通过普通用户进行操作,理由是通过root操作本身就危险,免密码登陆的root就更危险了。 在两台服务器上创建rsync用户 [root@server1 ~]# useradd -m rsync [root@server1 ~]# passwd rsync [root@server2 ~]# useradd -m rsync [root@server2 ~]# passwd rsync [root@server1 ~]# su - rsync [rsync@server1 ~]$ ssh-keygen -t rsa 在提示保存私钥(key)和公钥(public key)的位置时,使用默认值; 在提示是否需要私钥密码(passphrase)时,直接敲回车,即不使用私钥密码。 之后,将生成一对密钥,id_rsa(私钥文件)和id_rsa.pub(公钥文件),保存在/home/rsync/.ssh/目录下。 将公钥添加到远程主机的 authorized_keys 文件中 将文件上传到远程主机(假设远程主机IP为192.168.10.4) [rsync@server1 ~]$ scp ~/.ssh/id_rsa.pub rsync@192.168.10.4:/home/rsync/ 使用rsync用户SSH到登陆到远程主机,并将公钥添加到 authorized_keys 文件中 [rsync@server2 ~]$ mkdir .ssh [rsync@server2 ~]$ chmod 700 .ssh [rsync@server2 ~]$ mv ~/id_rsa.pub ~/.ssh/authorized_keys 重启SSH服务 [root@server1 ~]# /etc/init.d/sshd restart [root@server2 ~]# /etc/init.d/sshd restart 3.创建inotify_rsync.sh脚本 [root@server1 ~]# vim inotify_rsync.sh 1    #!/bin/sh 2    SRC=/home/rsync/test 3    DST=rsync@192.168.10.4:/home/rsync/test 4     5    /bin/su - rsync 6    /usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F 7            do 8                    /usr/bin/rsync -ahqzt

    02
    领券