rsync+inotify组合实现实时同步
首先准备两台服务器(centos7)
A:192.168.75.160
B:192.168.75.161
A机器当做客户端,B机器当做服务端
rsync 安装
客户端服务器端都要安装rsync ,但是客户端A不需要启动,服务器端B需要启动
接下来先安装rsync,可以用源码安装,从rsync官网:rsync.samba.org,下载源码包,或者用yum安装
1)源码安装:
可以进到 https://rsync.samba.org/ftp/rsync/下载

也可以用wget下载

# tar -xzvf rsync-3.1.3.tar.gz
# ./configure (默认的安装路径是/usr/local 可以通过 ./configure --help查看到)
# make && make install

安装完成,如果需要开机启动的话,需要把rsync启动命令放到 rc.local 文件中,服务端需要开机启动,客户端不需要
echo "/usr/local/bin/rsync --daemon --config=/etc/rsyncd.conf" >>/etc/rc.local
2)rpm安装(yum)
# yum install rsync
yum 安装会把rsync安装到 /usr/bin目录下,并且会生成 /etc/xinetd.d/rsync文件;
如果想要开机启动和源码安装方式相同,还有另外方法:
用yum安装时,会生成/etc/xinetd.d/rsync文件
centos7 下 rsync 默认会以xinetd方式运行rsync服务,所以只需启动xinetd服务即可
但是要修改下配置文件/etc/xinetd.d/rsync
1 # default: off
2 # description: The rsync server is a good addition to an ftp server, as it \
3 # allows crc checksumming etc.
4 service rsync
5 {
6 disable = no
7 flags = IPv6
8 socket_type = stream
9 wait = no
10 user = root
11 server = /usr/bin/rsync
12 server_args = --daemon --config=/etc/rsyncd.conf
13 log_on_failure += USERID
14 }
配置完毕后 ,还需要安装xinetd包,否则xinetd服务无法启动,
# yum install xinetd 安装
# /etc/init.d/xinetd start 启动
# chkconfig xinetd on 设置开机启动
# netstat -tunlp | grep 873 检查是否启动成功
rsync配置
服务器端配置:
rsync服务器端需要两个配置文件 rsyncd.conf rsyncd.password
1)rsyncd.conf文件
rsyncd.conf 默认放在/etc 目录下此文件需要手动创建,是rsync服务的主配置文件;rsyncd.password 主要 用户存储rsync用户名和密码
uid = root
gid = root
use chroot = no
max connections = 10
timeout=600
log file = /var/run/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock [backup]
path = /root/backup/
ignore errors
read only = no
list = no
auth users = cap
secrets file = /etc/rsyncd.password
host allow = 192.168.75.160
rsync默认是在nobody用户下运行,为了之后由于不明权限问题影响,此处uid=root用户
[backup]为要同步的模块名称 可以随意命名,但之后用到模块需要名称保持一致 ,可以有多个模块,此处指举了一个例子
path 为该模块要同步的目录
auth users 为用户,这个用户是自己命名,跟系统用户没有关系,是在 rsyncd.password 文件中与之对应的
secrets file 为用户、密码文件
2) rsyncd.password
只需添加 用户名 : 密码即可 (可以有多组用户名和密码)
# vim /etc/rsyncd.password
cap:cap
创建完成之后更改这个文件的权限为600
# chmod 600 /etc/rsyncd.password
创建完毕之后,需要对模块中的目录授权
chown root:root -R /root/backup/
客户端配置
客户端配置只需要创建 /etc/rsyncd.password文件
客户端rsyncd.password文件里面只需要添加密码即可,不需要用户,但是有多个用户名和密码时,注意与服务器端rsyncd.password文件顺序对应上
# vim /etc/rsyncd.password
cap
同样授权 600
# chmod 600 /etc/rsyncd.password
启动rsync服务
如果使用源码安装rsync 使用 rsync-daemon 来启动rsync
# echo PATH=$PATH:/usr/local/bin/ >> /etc/profile
# source /etc/profile
# rsync -daemon
# ps aux | grep rsync
# netstat -tunlp | grep 873
如果 rsync 的配置文件不在 /etc/目录下,那么启动时需要在参数中手动加上配置文件路径,比如
rsync --daemon --config=/RSYNCPATH/
如果用yum安装
/etc/init.d/xinetd start
停止服务
源码安装停止方法
# pkill rsync
yum安装停止方法
/etc/init.d/xinetd stop
inotify的安装
再客户端进行安装,inotify主要功能是监视客户端被监控目录是否有变化,如果有变化,就向服务器端进行推送
先查看当前系统是否支持inotify
[root@VM_8_32_centos ~]# ll /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Dec 18 15:50 max_queued_events
-rw-r--r-- 1 root root 0 Dec 18 15:50 max_user_instances
-rw-r--r-- 1 root root 0 Dec 18 15:50 max_user_watches
显示这三个文件证明支持
这三个文件说明
max_user_watches:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数。
max_queued_events:设置inotify实例事件(event)队列可容纳的事件数量。
安装inotify方式可以用源码包安装 也可以用yum安装
源码安装:
# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
# tar -xzvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure --prefix=/usr/local/inotify
# make
# make install
[root@VM_8_32_centos bin]# ls /usr/local/inotify/bin/
inotifywait inotifywatch
一共安装了2个工具(命令),即inotifywait和inotifywatch inotifywait:在被监控的文件或目录上等待特定文件系统事件(open、close、delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用。 inotifywatch:收集被监视的文件系统使用度统计数据,指定文件系统事件发生的次数统计
接下来编写脚本,rsynctest.sh
#!/bin/bash
#
src=/root/backup/
des=backup
host=192.168.75.161
user=cap
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T%w%f%e' -e modify,delete,create,attrib $src | while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.password $src $user@$host::$des
echo "${files} was fsynced " >>/tmp/rsync.log 2>&1
done
运行rsynctest.sh脚本,这个脚本是我在网上找的,有个问题就是里面 inotifywait 监控到变化的 files 变量 ,在下面rsync中实际并没有用到,这样每次虽然监控到是哪些文件有变化,但是rsync都是做的全量同步,又找了其他文档,有如下写法
#!/bin/bash
#
src=/root/backup/
user=cap
host=192.168.75.161
des=backup /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' -e modify,delete,create,attrib,close_write,move $src | while read file
do
INO_EVENT=$(echo $file | awk '{print $4}')
INO_FILE=$(echo $file | awk '{print $3}')
echo "------------------------------$(date)--------------------------"
echo "$file"
echo "$INO_EVENT"
echo "$INO_FILE"
if [[ $INO_EVENT =~ 'CREATE' ]] || [[ $INO_EVENT =~ 'MODIFY' ]] || [[ $INO_EVENT =~ 'CLOSE_WRITE' ]] || [[ $INO_EVENT =~ 'MOVED_TO' ]]
then
echo 'CREATE or MODIFY or CLOSE_WRITE or MOVED_TO'
rsync -avzcR --password-file=/etc/rsyncd.password $(dirname ${INO_FILE}) $user@$host::${des}
fi
if [[ $INO_EVENT =~ 'DELETE' ]] || [[ $INO_EVENT =~ 'MOVED_FROM' ]]
then
echo 'DELETE or MOVED_FROM'
rsync -avzcR --delete --password-file=/etc/rsyncd.password $(dirname ${INO_FILE}) $user@$host::${des}
fi
if [[ $INO_EVENT =~ 'ATTRIB' ]]
then
echo 'ATTRIB'
if [ ! -d "$INO_FILE" ]
then
rsync -avzcR --password-file=/etc/rsyncd.password $(dirname ${INO_FILE}) $user@$host::${des}
fi
fi
done
现在可以进行测试,在客户端 /root/backup/ 目录下进行文件操作(增删改查等),服务器端会随之更新变化
PS
rsync --delete /空目录 /要删除的目录
ctrl + R --> 输入历史命令的关键字 --> 按下右光标键
参考文献:https://yq.aliyun.com/articles/43197
https://www.ilanni.com/?spm=a2c4e.11153940.blogcont43197.26.1aad7857f1yu9o&p=8513
https://www.cnblogs.com/hackerer/p/5243639.html
https://www.cnblogs.com/ginvip/p/6430986.html
rsync+inotify组合实现实时同步的更多相关文章
- CentOS 6.5 rsync+inotify实现数据实时同步备份
CentOS 6.5 rsync+inotify实现数据实时同步备份 rsync remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的.数据在内存缓存区完成之后还没有写入到磁盘 ...
- sersync基于rsync+inotify实现数据实时同步
一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192. ...
- CentOS7 Rsync服务搭建-Rsync+Inotify架构实现实时同步
一.rsync 概念 1.rsyncrsync是类unix/linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同 ...
- Rsync+inotify实现文件实时同步#附shell脚本
强烈推荐先仔细看此文 https://segmentfault.com/a/1190000002427568 实验环境 centos 7.3 vm2:192.168.221.128 同步服务器 vm1 ...
- rsync+inotify实现文件实时同步
一.相关组件简介 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器 ...
- 实战:rsync+inotify实现数据实时同步
Linux 内核从 2.6.13 版本开始提供了 inotify 通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等.利用这一机制,可以非常方便地实现文件异动告警.增量备份,并针对目录 ...
- Rsync + inotify 实现文件实时同步
Rsync 用来实现触发式的文件同步. Inotify-tools是一套组件,Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取.删除.移动等 ...
- Centos 6.5配置rsync+inotify实现文件实时同步
1.安装rsync(两台机器执行相同的步骤)yum install gcc yum install rsyncd xinetd -y因为rsync是由xinetd启动的,所以需要修改一个配置vim / ...
- rsync+inotify磁盘数据实时同步
一.rsync+inotify主服务器部署 1.1安装rsync [root@nginx ~]# cd /usr/src/ [root@nginx src]# tar zxvf rsync-3.0.9 ...
- rsync+inotify实现数据实时同步
rsync rsync是linux系统下的数据镜像备份工具.支持远程同步,本地复制,或者与其他SSH.rsync主机同步. 优点: 1).可以镜像保存整个目录树和文件系统.保存源目录整个目录树和文件系 ...
随机推荐
- SQL SERVER 多表联合修改
sql server中有时候会用到多表联合修改,下面是简单的多表修改的例子 UPDATE a SET a.a1 = b.b1 , a.a2 = b.b2 FROM A a, B b WHERE a.a ...
- golang 指针
一个指针变量指向了一个值的内存地址,类似于变量和常量,在使用指针前你需要声明指针. 每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置.使用&字符放在变量前面对变量进行" ...
- hadoop单机测试环境安装(简)
1.下载hadoop官网就可以下载.可以直接搜hadoop , 其实可以直接查看官网的版主文档搭建https://hadoop.apache.org/docs/stable/hadoop-proj ...
- 51定时器:0xee的由来
定时时间=(65536-初值)×(12/晶振频率) 因为51实验板的晶振为11.0592,所以 定时时间=(65536-初值)×(12/11.0592) 定时1ms:1000=(65536-初值)×( ...
- 常用的DOS指令及部分快捷键
常用的DOS指令及部分快捷键 1.dos打开方式 win + R打开运行,输入cmd,打开dos 2.常用的Dos指令 a.切换盘号 方法 直接输入对应盘加" :" D: ...
- HTML——VSCODE配置笔记
# 使用VSCODE编辑前端代码 ### 1.问题一:无法根据!快速生成html标准代码 (1).首先看文件命名是否出错,即文件名后缀名.html (2).第一步没出错,就在新建文件的编辑状态下拨动C ...
- Linux 使用Postfix与Dovecot部署邮件系统
电子邮件系统 电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些. 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电 ...
- react复制文案到剪切板
这里使用别人写好的插件. 1.安装要用到的插件:copy-to-clipboard: 2.导入: import copy from 'copy-to-clipboard'; 3.使用: copy(co ...
- ubuntu20安装open4.4带扩展库
0查看当前版本安装 opencv_version 已经装了3.49 再装个4.4共存 1安装依赖库 sudo add-apt-repository "deb http://security. ...
- 上分准备 VP Codeforces Round #762 (Div. 3) 4题ABCE
+00:02 +00:16 +01:08 +02:07 VP 情况 4/8 ABCE ,赛时排名可以到823,什么时候我可以上个青 B 本想写个map的二分的,发现自己不会,写了个普普通通的二分 ...