CentOS 7 rsync+inotify实现实时同步
测试环境如下:
inotify-slave IP : 172.16.0.222
inotify-master IP : 172.16.0.233
对两台机的要求:
安装依赖包gcc: yum install gcc –y
关闭disabled
开放端口873
一、inotify slave部署
1、 安装rsync:
$ sudo yum install rsync –y
2、 添加用户和模块目录,并更改用户和组
$ sudo useradd rsync –s /sbin/nologin –M $ sudo mkdir /home/jeff/back $ sudo chown rsync.rsync /home/jeff/back/
3、 修改配置文件/etc/rsyncd.conf,内容如下:
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log [backup]
path = /home/jeff/back/
ignore errors
read only = no
write only = no
list = false
hosts allow = 10.0.0.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
Tips: ubuntu系统的文件路径一般为/usr/share/doc/rsync/examples/rsyncd.conf,可以创建软链接,结果都一样。创建方法如下:
$ sudo ln -s /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsyncd.conf
4、 配置虚拟用户的密码文件
$ sudo -i
# echo ‘rsync_backup:jeff’ >>/etc/rsync.password
# exit
$ sudo chmod 600 /etc/rsync.password
$ sudo rsync --daemon
$ sudo ss -tulpn |grep rsync
5、 加入开机启动
$ sudo -i
# echo ‘/usr/bin/rsync --daemon’ >>/etc/rc.local
# exit
二、部署服务器(inotify-master)
1、 查看系统是否支持inotity
ll /proc/sys/fs/inotify # 如果显示max_queued_events、max_user_instances、max_user_watches就证明支持inotify
2、 安装inotify 3.14
$ wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
$ tar zxf inotify-tools-3.14.tar.gz
$ cd inotify-tools-3.14 $ sudo ./configure --prefix=/usr/local/inotify
$ sudo make && sudo make install
3、 创建备份目录
$ mkdir /home/jeff/back/
4、 创建rsync服务的密码文件
$ sudo -i
# echo “jeff” >/etc/rsync.password //此处只写密码即可
# chmod 600 /etc/rsync.password
# exit
5、 编写执行脚本
$ sudo vim /usr/local/inotify.sh
[/usr/local/inotify.sh] #!/bin/bash
host01=172.16.0.222 //inotify-slaver的IP地址
src=/home/jeff/back //本地监控的目录
dst=backup //inotify-slave的服务模块名
user=rsync_backup //inotify-slave的rsync虚拟用户
rsync_passfile=/etc/rsync.password //本地调用的rsync密码文件
inotify_home=/usr/local/inotify //inotify安装目录 #judge
if [ ! -e "$src" ] \
|| [ ! -e "${rsync_passfile}" ] \
|| [ ! -e "${inotify_home}/bin/inotifywait" ] \
|| [ ! -e "/usr/bin/rsync" ];
then
echo "Check File and Folder"
exit 9
fi ${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \
| while read file
do
# rsync -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1
cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1
done
exit 0
6、将脚本加入后台执行
$ sh inotify.sh &
7、 加入开机启动
$ sudo -i
# echo ‘/bin/bash /home/jeff/inotify.sh &’ >>/etc/rc.local
# exit
三、测试实时同步(部署前建议先运行这一步验证,然后再执行第二步)
$ sudo rsync -avz /home/jeff/back/test.txt rsync_backup@10.0.0.22::backup --password-file=/etc/rsync.password
四、改变SSH的默认端口为1234时,rsync的连接方法如下
# 此处用-e 'ssh -p 3333'来指定SSH连接端口
$ /usr/bin/rsync -av /backup/* -e 'ssh -p 3333' root@10.0.0.22:/backup/
PS:操作步骤参考自 http://jingyan.baidu.com/article/656db918ee2f13e380249c4d.html
CentOS 7 rsync+inotify实现实时同步的更多相关文章
- centos 配置rsync+inotify数据实时同步2
一.Rsync服务简介 1. 什么是Rsync 它是一个远程数据同步工具,它在同步文件的同时,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“rsync算法”来使本地和远程两个主机 ...
- centos 配置rsync+inotify数据实时同步
何为rsync? 定义: rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,非常适用于异地备份 何为源端和发起端? 在远程同步过程中,负责发起rs ...
- linux rsync +inotify 实现 实时同步
前言: rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rs ...
- rsync + inotify 数据实时同步
一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能 ...
- rsync+inotify实现实时同步案例--转
转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...
- Rsync+inotify实现实时同步
1.1 inotify介绍 inotify是一种强大的.细粒度的.异步的文件系统事件控制机制.linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加.删除. ...
- rsync+inotify实现实时同步案例【转】
1.1 inotify介绍 inotify是一种强大的.细粒度的.异步的文件系统事件控制机制.linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加.删除. ...
- rsync+inotify实现实时同步案例
转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...
- rsync简介与rsync+inotify配置实时同步数据
rsync简介 rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. rsync特性 rsync ...
随机推荐
- onActivityResult方法不执行,什么原因?
原因: public void OnOpenPlayersActivity(View view) { Intent intent = new Intent(); intent.setClass(g ...
- client = new DatagramSocket(LocalPort) 是说端口已经被占用的意思
ok 现在遇到一个问题,client = new DatagramSocket(LocalPort) 是说端口已经被占用的意思 ref:!!https://community.oracle.com/t ...
- VHDL学习笔记——数字系统设计
数字系统是指有若干数字电路和逻辑不见构成的能够处理或传输数字信息的设备.数字系统可分为三部分:输入输出接口.数据处理器和控制器. [传统的系统硬件设计]方法是(1)采用自底向上的设计方法(2)采用通用 ...
- Luogu-3705 [SDOI2017]新生舞会
分数规划,最大费用最大流 题意可以简化为给出一个矩阵,要求每行和每列必须且只能取一个格子,要求\(sigma\ a_{i,j}/sigma\ b_{i,j}\) 最大 考虑分数规划,可以将式子转化: ...
- elasticsearch查询及logstash简介
Query DSL: request body: 分成两类: query dsl:执行full-text查询时,基于相关度来评判其匹配结果: 查询执行过程复杂,且不会被缓存: filter dsl:执 ...
- 启动Hadoop时DFSZKFailoverController没有启动
在启动Hadoop成功后,并没有报错信息,jps查看进程,发现DFSZKFailoverController没有启动成功,后来发现是因为防火墙的原因,关掉重试就OK了 systemctl stop f ...
- Win7.窗口自动滚动回到屏幕
PS:笔记本 ThinkPad E440 1.前提:窗口 的一部分位于在屏幕的外面,此窗口处于激活的状态 操作:鼠标放置在窗口内部,鼠标继续往屏幕外部移动,鼠标没有任何其他事件(只有 MouseMov ...
- [转载]C++Assert()函数
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> void assert( i ...
- Hibernate学习---第九节:Hibernate之hql
一.Hql 入门 1.实体类: package learn.hibernate.bean; import java.util.Date; import java.util.HashSet; impor ...
- Vue2.0 Transition常见用法全解惑
Vue2.0的过渡系统(transition)有了很大的改变,想把1.0的项目迁移到2.0,着实需要费一些功夫,今天我就要把vue2.0的过渡系统的用法搞清楚,因为之前确实踩了不少坑.这里只涉及单元素 ...