一、rsync服务端部署
两个服务端 192.168.1.234、172.16.8.85。在此192.168.1.234作为数据运行的客户端,172.16.8.85作为数据备份的服务端。
而rsync服务端则放在172.16.8.85上,用以不断的从192.168.1.234上接收数据进行备份。在此我把192.168.1.234叫做客户端,172.16.8.85叫做服务端。
1、查看服务端rsync版本
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLxMTN1IDOyYTM0ADNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2、创建配置文件
默认安装rsync程序后,不会自动创建rsync的主配置文件,需要手工创建,在 /etc 下创建rsyncd.conf文件,并配置如下内容:
#rsync server 为 rsyncd 服务编辑配置文件,默认没有,需自己编辑
#create by sherwin 13:41 2019-3-29
##rsyncd.conf start##
#rsync运行权限为sherwin
uid = sherwin
#rsync运行权限为sherwin
gid = sherwin
#是否让进程离开工作目录
use chroot = no
#客户端最大并发连接数 ,0为不限制
max connections = 2000
#连接超时
timeout = 600
#指定rsync的pid存放路径
pid file = /var/run/rsyncd.pid
#指定rsync的锁文件存放路径
lock file = /var/run/rsyncd.lock
#指定rsync的日志存放路径
log file = /var/log/rsyncd.log
#忽略一些无关的I/O错误
ignore errors
#客户端可以上传
read only = false
#客户端可以下载
#write only = false
list = false
#允许连接的客户端主机ip
hosts allow = 192.168.1.0/24
#黑名单,*表示任何主机
hosts deny = 0.0.0.0/23
#认证此模块的用户名/#授权远程连接的用户
auth users = sherwin
#存放用户和密码的文件 "user:pwd"格式
secrets file = /etc/rsync.password
###############################################
[backup]#backup是模块的名称,后面传递过程中使用
comment = backup by sherwin 13:41 2019-3-29
#该模块存放文件的基础路径
path = /home/sherwin/backup
3、启动服务
创建好配置文件后,使用如下命令启动与查看
[[email protected] /]# rsync --daemon
failed to create pid file /var/run/rsyncd.pid: File exists //这是已经有一个rsync服务起来
[[email protected] /]# pkill rsync //使用pkill命令杀死进程
[[email protected] /]#
[[email protected] /]#
[[email protected] /]# rsync --daemon //启动服务
[[email protected] /]# ps -ef | grep rsync //查看rsync进程
root 11321 1 0 16:22 ? 00:00:00 rsync --daemon
root 11341 20836 0 16:22 pts/3 00:00:00 grep rsync
[[email protected] /]#
[[email protected] /]# netstat -lntup | grep rsync //查看rsync对应的端口有无起来
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 11321/rsync
tcp 0 0 :::873 :::* LISTEN 11321/rsync
[[email protected] /]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 11321 root 3u IPv6 45884134 0t0 TCP *:rsync (LISTEN)
rsync 11321 root 5u IPv4 45884135 0t0 TCP *:rsync (LISTEN)
4、创建rsync配套的虚拟用户
检查在配置文件中所写的用户是否存在,如果不存在则创建一个
#rsync运行权限为sherwin --配置文件中
uid = sherwin
#rsync运行权限为sherwin
gid = sherwin
[[email protected] /]# useradd sherwin //使用useradd命令创建用户;或者创建虚拟用户 useradd sherwin -s /sbin/nologin
useradd: user sherwin exists
[[email protected] /]# id sherwin
uid=511(sherwin) gid=511(sherwin) groups=511(sherwin)
[[email protected] /]#
[[email protected] /]#
5、创建backup目录(也就是要备份文件的目录),并且修改目录的所属用户为sherwin,与配置文件中的uid、gid相同。
[[email protected] sherwin]# mkdir backup
[[email protected] sherwin]# ls -ld backup/
drwxr-xr-x 2 root root 4096 Apr 4 16:37 backup/
[[email protected] sherwin]#
[[email protected] sherwin]# chown -R sherwin backup/
[[email protected] sherwin]# ls -ld backup/
drwxr-xr-x 2 sherwin root 4096 Apr 4 16:37 backup/
[[email protected] sherwin]#
[[email protected] sherwin]# chgrp -R sherwin backup/
[[email protected] sherwin]# ls -ld backup/
drwxr-xr-x 2 sherwin sherwin 4096 Apr 4 16:37 backup/
6、配置客户端登录的用户名跟密码,并修改存储密码的文件权限为600。(这个用户名就是配置文件中 auth users)
#认证此模块的用户名/#授权远程连接的用户
auth users = sherwin
[[email protected] sherwin]# echo "sherwin:sherwin">>/etc/rsync.password //配置客户端登录用户和密码
[[email protected] sherwin]# cat /etc/rsync.password
sherwin:sherwin
[[email protected] sherwin]# ll /etc/rsync.password
-rw-r--r-- 1 root root 16 Apr 4 16:44 /etc/rsync.password
[[email protected] sherwin]# chmod 600 /etc/rsync.password //修改/etc/rsync.password密码文件的权限为600, 只允许root访问
[[email protected] sherwin]# ll /etc/rsync.password
-rw------- 1 root root 16 Apr 4 16:44 /etc/rsync.password
[[email protected] sherwin]#
7、将“rsync --daemon”加入开机自启动,修改/etc/rc.local文件
[[email protected] sherwin]# echo "rsync --daemon" >>/etc/rc.local
[[email protected] sherwin]# cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
/sbin/service crond start
touch /var/lock/subsys/local
echo deadline > /sys/block/sda/queue/scheduler
rsync --daemon --address=172.16.8.85 //绑定制定IP:172.16.8.85提供服务
rsync --daemon
[[email protected] sherwin]#
8、同步安全优化(可选)
[[email protected] sherwin]# lsof -i :873 //查看873端口是否起来
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 11321 root 3u IPv6 45884134 0t0 TCP *:rsync (LISTEN)
rsync 11321 root 5u IPv4 45884135 0t0 TCP *:rsync (LISTEN)
[[email protected] sherwin]# netstat -lntup | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 15038/rsync
tcp 0 0 :::873 :::* LISTEN 15038/rsync
[[email protected] sherwin]# pkill rsync //杀进程
[[email protected] sherwin]# rsync --daemon --address=172.16.8.85 //绑定指定IP:192.168.1.17提供服务
[[email protected] sherwin]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 15113 root 3u IPv4 45995034 0t0 TCP ssdb.readwrite.host:rsync (LISTEN)
[[email protected] sherwin]# netstat -lntup | grep rsync
tcp 0 0 172.16.8.85:873 0.0.0.0:* LISTEN 15113/rsync
[[email protected] sherwin]#
二、inotify + rsync 客户端部署
1、配置客户端密码(登陆到rsync服务端的密码)
就是在服务端配置密码文件中的用户名与密码,后面在同步时直接使用文件,不需要再次输入密码。
[[email protected] sherwin]# echo "sherwin">>/etc/rsync.password
[[email protected] sherwin]# cat /etc/rsync.password
sherwin
[[email protected] sherwin]# chmod 600 /etc/rsync.password
[[email protected] sherwin]# ls -ld /etc/rsync.password
-rw------- 1 root root 8 Apr 4 17:42 /etc/rsync.password
[[email protected] sherwin]#
2、备份/home/sherwin/tmp/目录下所有文件到服务端的backup/目录下
[[email protected] sherwin]# ll tmp/
total 0
[[email protected] sherwin]# touch tmp/{a..f}
[[email protected] sherwin]# ll tmp/
total 0
-rw-r--r-- 1 root root 0 Apr 4 17:49 a
-rw-r--r-- 1 root root 0 Apr 4 17:49 b
-rw-r--r-- 1 root root 0 Apr 4 17:49 c
-rw-r--r-- 1 root root 0 Apr 4 17:49 d
-rw-r--r-- 1 root root 0 Apr 4 17:49 e
-rw-r--r-- 1 root root 0 Apr 4 17:49 f
[[email protected] sherwin]# rsync -avz ./tmp/ [email protected]::backup --password-file=/etc/rsync.password //push备份
sending incremental file list
./
a
b
c
d
e
f
sent 281 bytes received 125 bytes 270.67 bytes/sec
total size is 0 speedup is 0.00
[[email protected] sherwin]#
3、检查服务端backup目录下的文件
[[email protected] backup]# ll
total 0
-rw-r--r-- 1 sherwin sherwin 0 Apr 4 2019 a
-rw-r--r-- 1 sherwin sherwin 0 Apr 4 2019 b
-rw-r--r-- 1 sherwin sherwin 0 Apr 4 2019 c
-rw-r--r-- 1 sherwin sherwin 0 Apr 4 2019 d
-rw-r--r-- 1 sherwin sherwin 0 Apr 4 2019 e
-rw-r--r-- 1 sherwin sherwin 0 Apr 4 2019 f
[[email protected] backup]#
4、安装inotify工具
inotify-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
查看当前系统是否支持inotify
[[email protected] sherwin]# uname -r //内核版本,从kernel 12.6.13开始支持
2.6.18-409.el5
[[email protected] sherwin]# ls -l /proc/sys/fs/inotify/ //查看是否支持
total 0
-rw-r--r-- 1 root root 0 Apr 8 09:17 max_queued_events
-rw-r--r-- 1 root root 0 Apr 8 09:17 max_user_instances
-rw-r--r-- 1 root root 0 Apr 8 09:17 max_user_watches
[[email protected] sherwin]# //显示当前三个文件表示支持
5、编译安装inotify
[[email protected] sherwin]# ls -ld inotify-tools-3.14.tar.gz
-rw-r--r-- 1 root root 358772 Mar 29 10:53 inotify-tools-3.14.tar.gz
[[email protected] sherwin]# tar -zxvf inotify-tools-3.14.tar.gz
[[email protected] sherwin]#
[[email protected] sherwin]# cd inotify-tools-3.14
[[email protected] inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify-tools-3.14
[[email protected] inotify-tools-3.14]# make & make install
[[email protected] inotify-tools-3.14]# ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools //创建软连接
[[email protected] inotify-tools-3.14]# ll /usr/local/
total 112
drwxr-xr-x 17 root root 4096 May 17 2016 anaconda2
drwxr-xr-x 17 root root 4096 May 16 2016 anaconda3
drwxr-xr-x 2 root root 4096 Nov 8 17:03 bin
drwxr-xr-x 2 root root 4096 May 11 2011 etc
drwxr-xr-x 2 root root 4096 May 11 2011 games
drwxr-xr-x 4 root root 4096 Nov 8 16:22 include
lrwxrwxrwx 1 root root 30 Mar 29 10:58 inotify-tools -> /usr/local/inotify-tools-3.14/
drwxr-xr-x 6 root root 4096 Apr 8 09:26 inotify-tools-3.14
drwxr-xr-x 6 root root 4096 Nov 8 17:03 lib
drwxr-xr-x 2 root root 4096 Jan 22 2018 lib64
drwxr-xr-x 3 root root 4096 Nov 8 15:42 libexec
drwxr-xr-x 3 root root 4096 Sep 5 2016 man
drwxr-xr-x 2 root root 4096 May 11 2011 sbin
drwxr-xr-x 11 root root 4096 Nov 8 17:03 share
drwxr-xr-x 2 root root 4096 May 11 2011 src
drwxr-xr-x 3 root root 4096 Nov 8 17:03 var
[[email protected] inotify-tools-3.14]#
提示编译成功后生成4个目录,分别是:
[[email protected] local]# cd inotify-tools
[[email protected] inotify-tools]# ll
total 16
drwxr-xr-x 2 root root 4096 Mar 29 10:57 bin //inotify执行命令(二进制)
drwxr-xr-x 3 root root 4096 Mar 29 10:57 include //inotify程序所需要的头文件
drwxr-xr-x 2 root root 4096 Mar 29 10:57 lib //动态链接的库文件
drwxr-xr-x 4 root root 4096 Mar 29 10:57 share //帮助文档
[[email protected] inotify-tools]#
工具集和介绍:
一共安装了2个工具(命令),即inotifywait和inotifywatch
inotifywait:在被监控的文件或目录上等待特定文件系统事件(open、close、delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用
inotifywatch:收集被监视的文件系统使用统计数据,指定文件系统事件发生的次数统计
6、一般工作中使用到:
[[email protected] sherwin]# ./inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,create,move,delete,attrib,close_write /home/sherwin/tmp
“%y %m %d %H %M”----“年 月 日 小时 分钟”
“%T %w %f”-----“时间 路径 文件名” (%w%f 表达的是路径+文件名,也就是绝对路径)
通过脚本实时同步:
#!/bin/bash
inotify=/usr/local/inotify-tools/bin/inotifywait
$inotify -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,create,move,delete,attrib,close_write /home/sherwin/tmp | while read events
do
cd /home/sherwin/ &&
rsync -avzP ./tmp/ --delete [email protected]::backup --password-file=/etc/rsync.password
echo "'date + '%F%T'' new events: $events" >> /home/sherwin/rsync.log 2>&1
done
脚本作如下修改改进(可略过):
#!/bin/bash
inotify=/usr/local/inotify-tools/bin/inotifywait
path=/home/sherwin/tmp
backup_server=172.16.8.85
$inotify -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,delete,close_write $path | while read events
do
cd $path &&\
rsync -avzP ./ --delete [email protected]$backup_server::backup --password-file=/etc/rsync.password
echo "new events: $events" >> /home/sherwin/rsync.log 2>&1
done
脚本改进,结合rsync的特性,分开判断来实现一个目录的增删改查对应的操作:
#!/bin/bash
src=/home/sherwin/tmp # 需要同步的源路径
dst=backup # 目标服务器上 rsync --daemon 发布的名称,rsync --daemon这里就不做介绍了,网上搜一下,比较简单。
rsync_passwd_file=/etc/rsync.password # rsync验证的密码文件
ip1=172.16.8.85 # 目标服务器1
#ip2=192.168.0.19 # 目标服务器2
user=sherwin # rsync --daemon定义的验证用户名
inotify=/usr/local/inotify-tools/bin/inotifywait # inotify目录
cd ${src} # 此方法中,由于rsync同步的特性,这里必须要先cd到源目录,inotify再监听 ./ 才能rsync同步后目录结构一致
$inotify -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %Xe %w%f' -e modify,create,delete,attrib,close_write,move ./ | while read file # 把监控到有发生更改的"文件路径列表"循环
do
INO_EVENT=$(echo $file | awk '{print $3}') # 把inotify输出切割 把事件类型部分赋值给INO_EVENT
INO_FILE=$(echo $file | awk '{print $4}') # 把inotify输出切割 把文件路径部分赋值给INO_FILE
echo "-------------------------------$(date)------------------------------------"
echo $file
#增加、修改、写入完成、移动进事件
#增、改放在同一个判断,因为他们都肯定是针对文件的操作,即使是新建目录,要同步的也只是一个空目录,不会影响速度。
if [[ $INO_EVENT =~ 'CREATE' ]] || [[ $INO_EVENT =~ 'MODIFY' ]] || [[ $INO_EVENT =~ 'CLOSE_WRITE' ]] || [[ $INO_EVENT =~ 'MOVED_TO' ]] # 判断事件类型
then
echo "'date + '%F%T'' new events: $file" >> /home/sherwin/rsync.log 2>&1
rsync -avzcR --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${dst} # INO_FILE变量代表路径哦 -c校验文件内容
#仔细看 上面的rsync同步命令 源是用了$(dirname ${INO_FILE})变量 即每次只针对性的同步发生改变的文件的目录(只同步目标文件的方法在生产环境的某些极端环境下会漏文件 现在可以在不漏文件下也有不错的速度 做到平衡) 然后用-R参数把源的目录结构递归到目标后面 保证目录结构一致性
fi
#删除、移动出事件
if [[ $INO_EVENT =~ 'DELETE' ]] || [[ $INO_EVENT =~ 'MOVED_FROM' ]]
then
echo "'date + '%F%T'' new events: $file" >> /home/sherwin/rsync.log 2>&1
rsync -avzR --delete --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${dst}
#看rsync命令 如果直接同步已删除的路径${INO_FILE}会报no such or directory错误 所以这里同步的源是被删文件或目录的上一级路径,并加上--delete来删除目标上有而源中没有的文件,这里不能做到指定文件删除,如果删除的路径越靠近根,则同步的目录月多,同步删除的操作就越花时间。这里有更好方法的同学,欢迎交流。
fi
#修改属性事件 指 touch chgrp chmod chown等操作
if [[ $INO_EVENT =~ 'ATTRIB' ]]
then
echo "'date + '%F%T'' new events: $file" >> /home/sherwin/rsync.log 2>&1
if [ ! -d "$INO_FILE" ] # 如果修改属性的是目录 则不同步,因为同步目录会发生递归扫描,等此目录下的文件发生同步时,rsync会顺带更新此目录。
then
rsync -avzcR --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${dst}
fi
fi
done
以上脚本的修改只有在文件有变化时才会同步,则需要追加一个每天或者两个小时进行一次全同步的脚本,来保证短线或者重启时没有同步的文件:
#!/bin/sh
#src={{ dict_dir_update_server_v9 }}/DataDictionary # 需要同步的源路径
src=/opt/sumscope/datafeeds/UpdateServerV9/data/SSDictionary/DataDictionary # 需要同步的源路径
dst=backup # 目标服务器上 rsync --daemon 发布的名称
rsync_passwd_file=/etc/rsync.password # rsync验证的密码文件
dst_ip=172.16.8.85 # 目标服务器1
user=sumscope # rsync --daemon定义的验证用户名
cd ${src}
#once a day
has_run="false"
trigger_time=2300
reset_time=0100
while false ; do
cur_time=`date +%H%M`
if [ $cur_time -gt $trigger_time ] && [ $has_run = "false" ] ; then
echo "'date + '%F%T'' new events: $(date) all backup"
rsync -avz --no-iconv --password-file=${rsync_passwd_file} ./ ${user}@${dst_ip}::${dst}
rsync -avz --no-iconv --password-file=${rsync_passwd_file} ${user}@${dst_ip}::${dst} ./
has_run="true"
fi
if [ $cur_time -le $reset_time ] ; then
has_run="false"
fi
sleep 10
done
#Every two hours
last_time=`date +%s`
while true ; do
end_time=`date +%s`
total_time=$(( end_time - last_time ))
if [ $total_time -gt 7200 ] ; then
last_time=${end_time}
echo "'date + '%F%T'' new events: $(date) all backup"
rsync -avz --no-iconv --password-file=${rsync_passwd_file} ./ ${user}@${dst_ip}::${dst}
rsync -avz --no-iconv --password-file=${rsync_passwd_file} ${user}@${dst_ip}::${dst} ./
else
sleep 10
fi
done
注意:
在rsync命令中加入–no-iconv 参数,是因为同步文件时,遇到了一个错误:
这个错误在其官网上也没有明确的定论,则只能增大延时时间与 添加这个参数
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Connection reset by peer (104)
rsync: connection unexpectedly closed (314587 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
rsync: failed to connect to 172.16.8.85: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]
'date + '%F%T'' new events: 2019年 04月 10日 星期三 16:22:55 CST all backup
rsync: failed to connect to 172.16.8.85: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
rsync: failed to connect to 172.16.8.85: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]
'date + '%F%T'' new events: 2019年 04月 10日 星期三 16:26:15 CST all backup
脚本开机可以加入启动:
[[email protected] sherwin]# cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/opt/sumscope/data-service/qpid/qpidd.sh
~
[[email protected] sherwin]# echo "/bin/sh /home/sherwin/inotify.sh &" >> /etc/rc.local
[[email protected] sherwin]#
提示:
一个& 代表从后台开始运行该条命令。
关键参数调整优化:
在/proc/sys/fs/inotify目录下有三个文件,对inotify机制有一定的限制
max_user_watches:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
max_queued_events:设置inotify实例事件(event)队列可容纳的事件数量。
[[email protected] test]# cat /proc/sys/fs/inotify/max_user_watches
8192
[[email protected] test]# echo "50000000" >/proc/sys/fs/inotify/max_user_watches
[[email protected] test]# cat /proc/sys/fs/inotify/max_user_watches
50000000
[[email protected] test]# cat /proc/sys/fs/inotify/max_queued_events
16384
[[email protected] test]# echo "50000000" >/proc/sys/fs/inotify/max_queued_events
[[email protected] test]# cat /proc/sys/fs/inotify/max_queued_events
50000000
[[email protected] test]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
[[email protected] test]#
7、测试:
客户端:
脚本属于开启状态:
[[email protected] sherwin]# sh -x inotify.sh
+ inotify=/usr/local/inotify-tools/bin/inotifywait
+ /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,create,move,delete,attrib,close_write /home/sherwin/tmp
+ read events
+ cd /home/sherwin/
+ rsync -avzP ./tmp/ --delete [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
./
deleting f
deleting e
deleting d
deleting c
deleting b
deleting a
1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=3/5)
2
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=2/5)
3
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=1/5)
4
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=0/5)
sent 201 bytes received 87 bytes 192.00 bytes/sec
total size is 0 speedup is 0.00
+ echo ''\''date + '\''%F%T'\'''\'' new events: 08/04/19 09:55 /home/sherwin/tmp/1'
+ read events
+ cd /home/sherwin/
+ rsync -avzP ./tmp/ --delete [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
sent 54 bytes received 8 bytes 124.00 bytes/sec
total size is 0 speedup is 0.00
+ echo ''\''date + '\''%F%T'\'''\'' new events: 08/04/19 09:55 /home/sherwin/tmp/1'
+ read events
+ cd /home/sherwin/
+ rsync -avzP ./tmp/ --delete [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
新打开客户端的一个窗口,新建几个目录:
[[email protected] sherwin]# cd tmp/
[[email protected] tmp]# ll
total 0
-rw-r--r-- 1 root root 0 Apr 4 17:49 a
-rw-r--r-- 1 root root 0 Apr 4 17:49 b
-rw-r--r-- 1 root root 0 Apr 4 17:49 c
-rw-r--r-- 1 root root 0 Apr 4 17:49 d
-rw-r--r-- 1 root root 0 Apr 4 17:49 e
-rw-r--r-- 1 root root 0 Apr 4 17:49 f
[[email protected] tmp]# touch {1..4}
[[email protected] tmp]#
服务端:
服务端显示如下:
[[email protected] backup]# ll
total 0
-rw-r--r-- 1 sherwin sherwin 0 Apr 8 2019 1
-rw-r--r-- 1 sherwin sherwin 0 Apr 8 2019 2
-rw-r--r-- 1 sherwin sherwin 0 Apr 8 2019 3
-rw-r--r-- 1 sherwin sherwin 0 Apr 8 2019 4
[[email protected] backup]#
三、参考文档
inotify+rsync实现实时同步部署
rsync同步架构
rsync 简介
linux inotify-tools 安装
Rsync 故障排查整理
真正的inotify+rsync实时同步 彻底告别同步慢