条件
两台机器的指定目录,这里以/usr/local/nginx/html/为例
被同步的机器(服务端):192.168.10.105
拉取数据的机器(客户端):192.168.10.106
安装
yum install -y rsync
拉取同步,定时
-
配置105服务器并启动
#操作配置文件 vim /etc/rsyncd.conf
# See rsyncd.conf man page for more options. # configuration example: # uid = nobody # gid = nobody # use chroot = yes # max connections = 4 # pid file = /var/run/rsyncd.pid # exclude = lost+found/ # transfer logging = yes # timeout = 900 # ignore nonreadable = yes # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 #rsync安全验证 auth users=admin secrets file=/etc/rsyncd.pwd #服务名 [ftp] #被监听同步的目录 path = /usr/local/nginx/html/
#/etc/rsyncd.pwd的内容,用户名:密码 admin:123
#将/etc/rsyncd.pwd文件降权 chmod 600 /etc/rsyncd.pwd #启动rsync后台进程 rsync --daemon
-
操作106同步数据
#配置一个客户端密码文件 /etc/rsyncd.pwd.client 内容就是密码 123456
#修改密码文件权限 chmod 600 /etc/rsyncd.pwd.client #查看105对应服务目录下的文件列表,不加file配置,输入密码123456 rsync --list-only --password-file=/etc/rsyncd.pwd.client admin@192.168.10.105::ftp/ #增量同步命令,输入密码123456 rsync -avz --password-file=/etc/rsyncd.pwd.client admin@192.168.10.105::ftp/ /usr/local/nginx/html/ #完全同步,删除了命令也会同步删除 rsync -avz --delete --password-file=/etc/rsyncd.pwd.client admin@192.168.10.105::ftp/ /usr/local/nginx/html/
-
如果不需要用户密码验证,去掉服务端和客户端中的验证相关的配置和文件即可,客户端命令变化一下
rsync --list-only 192.168.10.105::ftp/ rsync -avz 192.168.10.105::ftp/ /usr/local/nginx/html/
推送同步,实时
-
106服务器接收,启动rsync后台进程
配置流程和上面拉取同步配置105一样,些许不一样
# See rsyncd.conf man page for more options. # configuration example: #如果使用其他用户和组得修改同步目录得权限 uid = root gid = root # use chroot = yes # max connections = 4 # pid file = /var/run/rsyncd.pid # exclude = lost+found/ # transfer logging = yes # timeout = 900 # ignore nonreadable = yes # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 #rsync安全验证 auth users=admin secrets file=/etc/rsyncd.pwd #关掉默认只读,允许外部提交文件 read only=no #服务名 [ftp] #被监听同步的目录 path = /usr/local/nginx/html/
-
105作为客户端执行命令
#查看106指定ftp服务目录文件列表 rsync --list-only --password-file=/etc/rsyncd.pwd.client admin@192.168.10.106::ftp/ #将105指定文件夹推送到ftp服务目录 rsync -avz --password-file=/etc/rsyncd.pwd.client /usr/local/nginx/html/ admin@192.168.10.106::ftp/ rsync -avz --delete --password-file=/etc/rsyncd.pwd.client /usr/local/nginx/html/ admin@192.168.10.106::ftp/
使用inotify-tool监控
-
安装
#先装一下自动编译工具 yum install -y automake #下载安装包解压 tar -zxvf inotify-tools-3.22.6.0.tar.gz #进入源文件目录,这一步依赖上面的工具 ./autogen.sh #这里如果出现缺少依赖的需要自己安装一下 ./configure --prefix=/usr/local/inotify/ #最后,分开执行也可 make && make install
-
客户端105服务器使用脚本,简单实验
#创建一个sh vim /root/inotify_auto.sh chmod +x /root/inotify_auto.sh
#!/bin/bash #脚本内容 nohup /usr/local/inotify/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move /usr/local/nginx/html/ | while read file do rsync -avz --delete --password-file=/etc/rsyncd.pwd.client /usr/local/nginx/html/ admin@192.168.10.106::ftp/ done
#后台进程启动脚本,启动完之后可以在105上操作监控的目录下的文件,106的文件会自动实时同步,也可以看一下日志 nohup /root/inotify_auto.sh >/root/inotify.log 2>&1 &