简介:rsync是用来同步文件和文件夹的,inotify是用来实现监听变动而自动同步的
OS:Centos7.3
服务器端:172.16.13.157
客 户 端 :172.16.13.156
目 标 :客户端文件夹内容变动后,自动同步到客户端上,使内容保持一致
下载https://github.com/rvoicilas/inotify-tools/wiki
部署步骤如下
本脚本主要分为三个部分,第一部分设置rsync服务器,第二部分在客户端上测试rsync功能能否正常使用,第三部分测试文件夹自动检测修改并同步
两台主机都执行:
关掉防火墙和selinuxsystemctl stop firewalldsystemctl disable firewalldsetenforce 0sed -i "s/enforcing/disabled/" /etc/selinux/config第一部分:(需要根据情况修改对应的ip等内容)
#服务器端:yum install rsync gcc -y#设置目录cat >> /etc/rsyncd.conf <<EOF #这里有坑,我直接复制到脚本里,结果制表符变成^I导致一直报错不存在目录。查看有没有复制正确,使用cat -A 查看文件,没有看到异常的符号就可以了,我后面是手动打的,没有复制[test] path = /test #本地共享目录 auth user = user1 #指定用户同步 secrets file = /etc/rsyncd.secrets #指定保存用户密码文件EOF#启动服务rsync --daemonnetstat -anpt|grep 873cat >> /etc/rsyncd.secrets <<EOF
user1:123EOFchmod 600 /etc/rsyncd.secrets
mkdir /testtouch /test/file{1..10}#执行完上面步骤后,可以尝试在客户端上执行rsync -av user1@172.16.13.158::test /date -a归档-v详细输出,目的是将158服务器上的test文件夹 同步到客户端上的/date文件夹下tar -zxvf inotify-tools*rm -rf *.gz
cd inotify-tools*./configure && make && make installvi /tmp/1.sh
#!/bin/bash/usr/local/bin/inotifywait -mrq -e modify,create,move,delete,attrib /node1 |while read events -m,–monitor 始终保持事件监听状态 -r,–recursive 递归查询目录-q,–quiet 只打印监控事件的信息 -e,–event 后面指定删、增、改等事件dorsync -a --delete /node1 172.16.13.159::test #-a归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 --delete 删除那些接收端还有而发送端已经不存在的文件echo "`date +'%F %T'` 出现事件 $events" >>/tmp/rsync.log 2>&1done
客户端:
yum install rsync -yrsync -a 172.16.13.158:: #正常会显示test(这个test就是服务器上的那个文件夹)rsync -av user1@172.16.13.158::test /datecd /date/lscat >> /etc/rsyncd.conf << EOF[test] path=/node2/ read only=false uid=root gid=rootEOF[root@bp node2]#mkdir /node2rsync --daemonnetstat -tlnp|grep 873cd /node2/lscd node1/ls服务器端:
mkdir /node1touch /node1/testa{1..5}nohup sh /tmp/1.sh & echo "aaa">>/node1/file1
文章比较乱,后面我再整理一下,大概流程就这样