rsync+inotify实时数据同步多目录实战
rsync+inotify实时数据同步多目录实战
inotify配置是建立在rsync服务基础上的配置过程
操作系统
| 主机名 | 网卡eth0 | 默认网关 | 用途 |
| root@58server1 | 192.168.1.111 | 192.168.1.1 | Rsync服务端 |
| root@58client | 192.168.1.121 | 192.168.1.1 | Rsync 节点 |
子网掩码均为255.255.255.0
具体需求:
要求在58server1上以rsync守护进程的方式部署rsync服务,使得root@58client的 rsync节点客户端主机把/data/数据目录和/data0/www目录中的数据同步到58server1 rsync服务端中
一、在配置inotify前己经把root@58server1 Rsync服务端的rsync服务部置好
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
[root@58server1 ~]# cat /etc/rsyncd.conf
#Rsync server
#created by oldboy 15:01 2009-6-5
##rsyncd.conf start##
uid = root
gid = root
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 192.168.1.1/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[www]
comment = www by old0boy 14:18 2012-1-13
path = /data0/www/
#####################################
[data]
comment = bbs by old0boy 14:18 2012-1-13
path = /data/
#####################################
|
二、开始安装
在安装inotify-tools前请先确认你的linux内核是否达到了2.6.13,并且在编译时开启CONFIG_INOTIFY选项,
1) 查看当前系统是否支持inotify
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@58client ~]# uname -r
2.6.18-308.el5
[root@58client ~]# ls -l /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 May 4 22:33 max_queued_events
-rw-r--r-- 1 root root 0 May 4 22:33 max_user_instances
-rw-r--r-- 1 root root 0 May 4 22:33 max_user_watches
|
#显示这三个文件则证明支持
2)下载inotify源码包
|
1
2
3
4
5
|
[root@58client ~]# mkdir /home/Mr.Xing/tools/ -p
[root@58client ~]# cd /home/Mr.Xing/tools/
[root@58client tools]# wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
|
3)编译安装inotfiy
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@58client tools]# ls
inotify-tools-3.14.tar.gz
[root@58client tools]# tar zxf inotify-tools-3.14.tar.gz
[root@58client tools]# cd inotify-tools-3.14
[root@58client inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify-tools-3.14
[root@58client inotify-tools-3.14]# make
[root@58client inotify-tools-3.14]# make install
[root@58client inotify-tools-3.14]# cd ..
[root@58client tools]# ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotfiy
[root@58client tools]# ls -l /usr/local/|grep inotify
lrwxrwxrwx 1 root root 30 May 4 22:42 inotfiy -> /usr/local/inotify-tools-3.14/
drwxr-xr-x 6 root root 4096 May 4 22:41 inotify-tools-3.14
|
参数:
--prefix=PATH 指定编译安装的路径
提示:更多的编译参数可以使用./configure –h 查看,编译成功后会生成4个目录,
小软件一般规范安装到同一个目录,一般为/usr/local中
建立一个软链接
进入安装inotify的目录
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@58client tools]# ls -l /usr/local/inotify-tools-3.14/
total 16
drwxr-xr-x 2 root root 4096 May 4 22:41 bin #inotfiy执行命令(二进制)
drwxr-xr-x 3 root root 4096 May 4 22:41 include #inotfiy程序所需用的头文件
drwxr-xr-x 2 root root 4096 May 4 22:41 lib #动态链接的库文件
drwxr-xr-x 4 root root 4096 May 4 22:41 share #帮助文件
|
4) 编写inotify实时监控脚本 编写两个脚本,分别对应所共享的两个目录
如本例子,我们编写两个脚本分别为 data_inotify.sh 和www_inotify.sh
开始编写inotify脚本
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
[root@58client inotify]# mkdir /server/scripts/ -p
[root@58client inotify]# cd /server/scripts/
[root@58client scripts]# vi data_ inotify.sh
[root@58client scripts]# cat data_inotify.sh
#!/bin/bash
#para
host01=192.168.1.111
src=/data
dst=data
user=rsync_backup
rsync_passfile=/etc/rsync.password
inotify_home=/usr/local/inotify-tools-3.14/
#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
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
[root@58client scripts]# vi www_ inotify.sh
[root@58client scripts]# cat www_inotify.sh
#!/bin/bash
#para
host01=192.168.1.111
src= /data0/www
dst=www
user=rsync_backup
rsync_passfile=/etc/rsync.password
inotify_home=/usr/local/inotify-tools-3.14/
#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
|
一般添加了脚本后要格式化一次脚本
|
1
2
3
4
5
6
7
8
9
|
[root@58client scripts]# dos2unix www_inotify.sh
dos2unix: converting file www_inotify.sh to UNIX format ...
[root@58client scripts]# dos2unix data_inotify.sh
dos2unix: converting file data_inotify.sh to UNIX format ..
|
分别运行两个脚本:
|
1
2
3
4
5
6
7
|
[root@58client scripts]# sh www_inotify.sh &
[1] 3114
[root@58client scripts]# sh data_inotify.sh &
[2] 3118
|
测试:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
[root@58client ~]# touch /data/aa
[root@58client ~]# ls /data
aa
[root@58client ~]# touch /data0/www/aa
[root@58client ~]# ls /data0/www/
aa bbs blog www
[root@58server1 data]# ls /data/
aa
[root@58server1 data]# ls /data0/www/
aa bbs blog www
|
rsync+inotify实时数据同步多目录实战的更多相关文章
- rsync+inotify实时数据同步单目录实战
rsync+inotify实时数据同步单目录实战 rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...
- Rsync+inotify 实时数据同步 inotify master 端的配置
强大的,细致的,异步的文件系统事件监控机制.Linux 内科从 2.6.13 起支持 inotify Inotify 实现的几款软件:Inotify,sersync,lsyncd ※Inotify 实 ...
- Linux学习系列之Inotify+Rsync实现实时数据同步
Inotify简介 inotify介绍 inotify是一种强大的.异步的文件系统监控机制,linux内核从2.6.13起,加入了inotify的支持,通过inotify可以监控文件系统中添加.删除. ...
- Inotify+rsync实现实时数据同步
使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...
- centos7部署inotify与rsync实现实时数据同步
实验环境:CentOS Linux release 7.6.1810 node1:192.168.216.130 客户端(向服务端发起数据同步) node2:192.168.216.132 服务端(接 ...
- rsync+inotify实时数据同步
没有实际的用过,先mark一下,后面实践. https://www.osyunwei.com/archives/7447.html 一.为什么要用Rsync+sersync架构? 1.sersync是 ...
- rsync+inotify 实时双向同步
前言 在遇到需要 nginx 负载均衡,承受较高并发的情况,同时会有双机相同目录内容须保持一致的需求 rsync+inotify 是一个不错的解决方案,相较于 rsync+sersync 在处理大量文 ...
- 我的一次rsync+inotify本地数据同步示例
环境: web工作目录:/var/www/mydafuhao git仓库目录: /var/www/mydafuhao.git/mydafuhao 需求:inotify监控git仓库目录,发现有版本更新 ...
- Centos rsync+inotify 实现数据同步备份
最近公司做了一
随机推荐
- dapper使用时性能优化
数据库中类型 Area 数据库类型 varchar dapper 来操作数据库,不能直接写 sql Area=@Area) //dapper 对C#中的字符串类型 默认是对应数据库nva ...
- VBA删除空白行列
'删除空行 Sub DeleteEmptyRows() Dim LastRow As Long, r As Long LastRow = ActiveSheet.UsedRange.Rows.Coun ...
- Oracle 归档日志管理
一.Oracle日志介绍 1.Oracle日志分类 分三大类: Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和 redo log ...
- Ubuntu系统挂载磁盘硬盘
在电脑(Ubuntu16.04)新装了一个硬盘,然后只有挂载了我们才能正常使用,下面总结一下挂载的过程. 首先,打开命令行输入命令: sudo fdisk -l 可以看到:磁盘格式化后 硬盘格式化 命 ...
- Pytorch实现Top1准确率和Top5准确率
之前一直不清楚Top1和Top5是什么,其实搞清楚了很简单,就是两种衡量指标,其中,Top1就是普通的Accuracy,Top5比Top1衡量标准更“严格”, 具体来讲,比如一共需要分10类,每次分类 ...
- v-if 和v-show的区别
在切换 v-if 块时,Vue.js 有一个局部编译/卸载过程,因为 v-if 之中的模板也可能包括数据绑定或子组件.v-if 是真实的条件渲染,因为它会确保条件块在切换当中合适地销毁与重建条件块内的 ...
- 第七周课程总结&实验报考(五)
第七周课程总结&实验报考(五) 实验四 类的继承 实验目的: 1.理解抽象类与接口的使用: 2.了解包的作用,掌握包的设计方法. 实验要求: 1.掌握使用抽象类的方法. 2.掌握使用系统接口的 ...
- Solr 4.4.0安装
软件包准备 JDK http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin Solr https://archi ...
- [转帖]预警 | Linux 爆“SACK Panic”远程DoS漏洞,大量主机受影响
预警 | Linux 爆“SACK Panic”远程DoS漏洞,大量主机受影响 https://cloud.tencent.com/developer/article/1447879 所有的 版本 ...
- Android 子线程无法刷新UI界面
问题:在Android开发中,子线程无法直接更改UI界面视图的刷新 这个时候 Handler 起到了至关重要的作用. 简单来说 , Handler就是用来传递消息的. Handler可以当成子线程与主 ...