关键词:
1.1.架构规划
1.1.1架构规划准备
服务器系统 | 角色 | IP |
Centos6.7 x86_64 | NFS服务器端(NFS-server-inotify-tools) | 192.168.1.14 |
Centos6.7 x86_64 | rsync服务器端(rsync热备服务器) | 192.168.1.17 |
1.1.2架构图
2.1 部署前检查
2.1.1 检查rsync热备服务器daemon是否起来
1 [[email protected] data]# lsof -i:873
2 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
3 rsync 3071 root 3u IPv4 18684 0t0 TCP *:rsync (LISTEN)
4 rsync 3071 root 5u IPv6 18685 0t0 TCP *:rsync (LISTEN)
5 [[email protected] data]# ps -ef|grep rsync|grep -v grep
6 root 3071 1 0 Dec02 ? 00:00:00 rsync --daemon
7 [[email protected] data]#
2.1.2 NFS服务器相对于rsync服务器来说是客户端,所以要配置一个客户端密码
1 [[email protected] ~]# echo "zhurui" >>/etc/rsync.password
2 [[email protected] ~]# cat /etc/rsync.password
3 zhurui
4 [[email protected] ~]# chmod 600 /etc/rsync.password
5 [[email protected] ~]# ll /etc/rsync.password
6 -rw-------. 1 root root 7 Jan 31 00:49 /etc/rsync.password
7 [[email protected] ~]#
2.1.3 NFS客户端手动推/data/目录下数据到rsync热备服务器/backup目录下
1 [[email protected] data]# showmount -e localhost ##检查共享目录
2 Export list for localhost:
3 /data 192.168.1.0/24
4 [[email protected] ~]# cd /data/
5 [[email protected] data]# ll
6 total 12
7 -rw-r--r--. 1 nfsnobody nfsnobody 0 Jan 30 03:05 beautiful.txt
8 -rw-r--r--. 1 nfsnobody nfsnobody 9 Jan 30 04:33 f11.txt
9 -rw-r--r--. 1 root root 0 Jan 30 04:41 fs.txt
10 drwxr-xr-x. 2 nfsnobody nfsnobody 4096 Jan 30 03:05 huang
11 -rw-r--r--. 1 nfsnobody nfsnobody 0 Jan 30 03:17 reew.txt
12 -rw-r--r--. 1 root root 0 Jan 30 02:51 test1.txt
13 -rw-r--r--. 1 nfsnobody nfsnobody 0 Jan 30 04:41 wd.txt
14 drwxr-xr-x. 2 nfsnobody nfsnobody 4096 Jan 30 02:57 zhurui
15 -rw-r--r--. 1 nfsnobody nfsnobody 0 Jan 30 02:47 zhurui1.txt
16 -rw-r--r--. 1 nfsnobody root 0 Jan 30 02:10 zhurui.txt
17 [[email protected] /]# rsync -avz /data/ [email protected]::backup/ --password-file=/etc/rsync.password ##推送数据命令
18 sending incremental file list
19 ./
20 beautiful.txt
21 f11.txt
22 fs.txt
23 reew.txt
24 test1.txt
25 wd.txt
26 zhurui.txt
27 zhurui1.txt
28 huang/
29 zhurui/
30
31 sent 572 bytes received 171 bytes 114.31 bytes/sec
32 total size is 9 speedup is 0.01
33 [[email protected] /]#
2.1.4 rsync服务器端检查/backup目录下数据
3.1 服务部署
3.1.1 NFS服务端安装inotify工具
inofity-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
1)查看当前系统是否支持inotify
1 [[email protected] tools]# uname -r ##内核版本,从kernel2.6.13开始支持
2 2.6.32-573.el6.x86_64
3 [[email protected] tools]# ls -l /proc/sys/fs/inotify/ ##查看是否支持
4 total 0
5 -rw-r--r-- 1 root root 0 Jan 31 01:34 max_queued_events
6 -rw-r--r-- 1 root root 0 Jan 31 01:34 max_user_instances
7 -rw-r--r-- 1 root root 0 Jan 31 01:34 max_user_watches
8 ##显示当前三个文件表示支持
2)下载inotify源码包
1 [[email protected] tools]# ll
2 total 352
3 -rw-r--r--. 1 root root 358772 Mar 14 2010 inotify-tools-3.14.tar.gz
3)编译安装inotify
1 [[email protected] tools]# tar zxf inotify-tools-3.14.tar.gz
2 [[email protected] tools]# cd inotify-tools-3.14
3 [[email protected] inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify-tools-3.14
4 [[email protected] inotify-tools-3.14]# make&&make install
1 [[email protected] inotify-tools-3.14]# ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify-tools ##创建软链接
2 [[email protected] inotify-tools-3.14]# cd ..
3 [[email protected] local]# ll
4 total 44
5 drwxr-xr-x. 2 root root 4096 Sep 23 2011 bin
6 drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc
7 drwxr-xr-x. 2 root root 4096 Sep 23 2011 games
8 drwxr-xr-x. 2 root root 4096 Sep 23 2011 include
9 lrwxrwxrwx. 1 root root 30 Jan 31 01:58 inotify-tools -> /usr/local/inotify-tools-3.14/
10 drwxr-xr-x. 6 root root 4096 Jan 31 01:55 inotify-tools-3.14
11 drwxr-xr-x. 2 root root 4096 Sep 23 2011 lib
12 drwxr-xr-x. 2 root root 4096 Sep 23 2011 lib64
13 drwxr-xr-x. 2 root root 4096 Sep 23 2011 libexec
14 drwxr-xr-x. 2 root root 4096 Sep 23 2011 sbin
15 drwxr-xr-x. 5 root root 4096 Nov 25 02:40 share
16 drwxr-xr-x. 2 root root 4096 Sep 23 2011 src
17 [[email protected] local]# cd inotify-tools
18 [[email protected] inotify-tools]# ll
19 total 16
提示编译成功后会生成4个目录,分别是:
1 [[email protected] /]# cd /usr/local/inotify-tools
2 [[email protected] inotify-tools]# ll
3 total 16
4 drwxr-xr-x. 2 root root 4096 Jan 31 01:55 bin ##inotify执行命令(二进制)
5 drwxr-xr-x. 3 root root 4096 Jan 31 01:55 include ##inotify程序所需用的头文件
6 drwxr-xr-x. 2 root root 4096 Jan 31 01:55 lib ##动态链接的库文件
7 drwxr-xr-x. 4 root root 4096 Jan 31 01:55 share ##帮助文档
工具集合介绍:
一共安装了2个工具(命令),即inotifywait和inotifywatch
inotifywait:在被监控的文件或目录上等待特定文件系统事件(open、close、delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用。
inotifywatch:收集被监视的文件系统使用度统计数据,指定文件系统事件发生的次数统计。
4)inotify命令常用参数详解
1 [[email protected] inotify-tools]# ./bin/inotifywait --help
2 inotifywait 3.14
3 Wait for a particular event on a file or set of files.
4 Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
5 Options:
6 -r|--recursive Watch directories recursively. ##递归查询目录
7 -q|--quiet Print less (only print events) ##打印很少的信息,仅仅打印监控相关的信息
8 -m|--monitor Keep listening for events forever. Without
9 this option, inotifywait will exit after one
10 event is received. ##始终保持事件监听状态
11 --excludei <pattern>
12 Like --exclude but case insensitive. ##排除文件或目录时,不区分大小写
13 --timefmt <fmt> strftime-compatible format string for use with
14 %T in --format string. ##指定时间的输出格式
5)测试监控事件
开启两个窗口
1.测试create
1 第一步:
2 [[email protected] inotify-tools]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e create /data ##实行当前命令后,界面处于阻塞状态,只有在另外一个客户端测试时,才会显示监控状态
3 31/01/16 10:23 /data/ceshi.txt
4 31/01/16 10:24 /data/what
5 31/01/16 10:27 /data/a
6 31/01/16 10:27 /data/b
7 31/01/16 10:27 /data/c
8 31/01/16 10:27 /data/d
9 31/01/16 10:27 /data/e
10 31/01/16 10:27 /data/f
11
12 第二步:
13 克隆一个NFS客户端切换到/data目录下,新建ceshi.txt、what文件,观察监控的变化
14 [[email protected] data]# touch ceshi.txt
15 [[email protected] data]# mkdir /who
16 [[email protected] data]# touch what
17 [[email protected] data]#
18 [[email protected] data]# touch a..f
2、测试delete
1 [[email protected] inotify-tools]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e delete /data ##监控/data目录删除时间
2
3 监控如下:
4
5 31/01/16 10:31 /data/reew.txt
6 31/01/16 10:31 /data/test1.txt
7
8 [[email protected] data]# rm -f reew.txt test1.txt ##删除这两个文件
9 [[email protected] data]#
3、同时测试create、delete
1 第一步:
2 [[email protected] inotify-tools]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e delete,create /data
3 监控输出信息:
4 31/01/16 10:35 /data/hero.sh
5 31/01/16 10:35 /data/a
6 31/01/16 10:35 /data/f
7 31/01/16 10:36 /data/b
8 31/01/16 10:36 /data/c
9 31/01/16 10:36 /data/d
10 31/01/16 10:36 /data/e
11 第二步:
12 [[email protected] data]# touch hero.sh
13 [[email protected] data]# ll
14 [[email protected] data]# rm -f [a..f]
15 [[email protected] data]# rm -f a..f
16 [[email protected] data]#
一般工作中使用到:[[email protected] inotify-tools]# /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e delete,create,close_write /data
工作环境中通过脚本实时同步:
1 #!/bin/bash
2 inotify=/usr/local/inotify-tools/bin/inotifywait
3 $inotify -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e delete,create,close_write /data
4 5 |while read file
6 do
7 cd / &&
8 rsync -az /data --delete rsyn[email protected]::backup 9 --password-file=/etc/rsync.password
10 done
测试:
1 脚本属于开启状态:
2 [[email protected] scripts]# sh -x inotify.sh
3 + inotify=/usr/local/inotify-tools/bin/inotifywait
4 + read file
5 + /usr/local/inotify-tools/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e delete,create,close_write /data
6 + cd /
7 + rsync -az /data --delete [email protected]::backup --password-file=/etc/rsync.password
8 + read file
9 + cd /
10 + rsync -az /data --delete [email protected]::backup --password
11 接着在NFS客户端/data目录下创建文件
12 [[email protected] data]# touch a..z
13 [[email protected] data]# echo i am best >a ##修改a中的内容,查看热备服务器是否同步
14
15 rsync热备服务器端显示如下:
16 [[email protected] //]# cd /backup/
17 [[email protected] backup]# cd data/
18 [[email protected] data]# ll
19 total 0
20 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 a
21 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 b
22 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 c
23 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 d
24 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 e
25 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 f
26 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 g
27 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 h
28 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 i
29 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 j
30 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 k
31 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 l
32 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 m
33 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 n
34 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 o
35 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 p
36 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 q
37 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 r
38 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 s
39 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 t
40 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 u
41 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 v
42 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 w
43 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 x
44 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 y
45 -rw-r--r--. 1 rsync rsync 0 Mar 4 2016 z
46 [[email protected] data]# cat a
47 i am best ##显示已经实时同步过来
48 [[email protected] data]#
6)优化
1 [[email protected] scripts]# echo "50000000" >/proc/sys/fs/inotify/max_user_watches
2 [[email protected] scripts]# echo "50000000" >/proc/sys/fs/inotify/max_queued_events
结论:经过测试,每秒200个文件并发,数据同步几乎无延迟(小于1秒)
转自
inotify+rsync实现实时同步部署 - Williamer - 博客园 https://www.cnblogs.com/hackerer/p/5243639.html
Linux实战教学笔记23:Inotify事件监控工具 - 陈思齐 - 博客园 https://www.cnblogs.com/chensiqiqi/p/6542268.html
真正的inotify+rsync实时同步 彻底告别同步慢 - 琴酒网络 - 博客园 https://www.cnblogs.com/ginvip/p/6430986.html
inotify实时同步数据
实时同步服务如何实现数据实时同步?2.1.1实现数据同步通过(利用rsync服务)rsync服务端部署rsync客户端部署2.1.2实现数据实时监控(利用inotify)inotifywait-mrq--format‘%w%f‘-ecreate,delete,moved_to,close_write/data2.2实现数据同步与实时监... 查看详情
实时同步inotify+rsync的简单部署
第1章部署数据监控服务(inotify)1.安装inotify软件(检查是否安装)yuminstallinotify-tools-y---基于epel源(/etc/yum.repos.d/源文件保存目录)2.应用inotify软件/usr/bin/inotifywatch---实现数据变化统计命令,在实际工作中没有什么用处/usr/bin/ino... 查看详情
rsync与inotify实现数据实时同步
Rsync与Inotify单一的rsync只可以进行数据同步,单一的inotify只可以实时监控文件,两者结合使用刚好满足数据实时同步的需求,下面就用一个数据发布服务器和两个web服务器实例解析rsync+inotify实现实时同步。数据发布服务器192.168.... 查看详情
inotify和rsync实现实时同步(代码片段)
inotify和rsync实现实时同步首先先用两台主机实现rsyncc同步服务端:[[email protected]data14:20:35]#echo"rsyncuser:123">/etc/rsync.pass生成验证文件[[email protected]data14:21:13]#chmod600/etc/rsync.pass[[email& 查看详情
rsync+inotify实现文件实时同步(代码片段)
Rsync用来实现触发式的文件同步。inotify-tools是一套组件,Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量... 查看详情
rsync+inotify实时同步环境部署记录
rsync+inotify实时同步环境部署记录在使用rsync首次全量同步后,结合inotify对源目录进行实时监控,只有有文件变动或新文件产生,就会立刻同步到目标目录下,非常高效使用!一)单向同步需求:10.60.123.133同步/usr/local/tomcat-api/web... 查看详情
rsync+inotify实现代码实时同步
rsync rsync是lunix系统下的数据镜像备份工具。使用快速增量备份工具RemoteSync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。优点:1)、可以镜像保存整个目录树和文件系统。2)、可以很容易做到... 查看详情
inotify+rsync实现实时同步
第1章数据实时同步介绍1.1什么是实时同步:如何实现实时同步A. 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化B. 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上1.2实现实时同步的方法&... 查看详情
rsync+inotify实时同步(代码片段)
1背景在生产环境,有时会需要两台主机的特定目录实现实时同步。比如,将NFS共享目录的数据文件,自动实时同步到备份的服务器特定目录中2实时同步技术简介2.1实现实时同步的方法inotify+rsync方式实现数据同步sersync:金山公... 查看详情
inotify+rsync实现实时同步
第1章数据实时同步介绍1.1什么是实时同步:如何实现实时同步A. 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化B. 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上1.2实现实时同步的方法&... 查看详情
rsync+inotify实现上行实时同步(代码片段)
rsync:一款开源备份工具;实现不同主机间镜像同步整个目录树;支持增量备份、权限、压缩等rsync角色发起端:负责发起rsync同步,操作客户机(相当于C端)备份源:负责响应rsync的请求的服务器(相当于S端)同步的方向上行同步(上... 查看详情
centos利用rsync+inotify实现实时同步
1.1inotify介绍inotify是一种强大的、细粒度的、异步的文件系统事件控制机制。linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控... 查看详情
rsync+inotify实现实时同步(代码片段)
如果有一天去接受面试:面试官问你一个1t的文件需要进行传输,问题用何种方法。假如你答了scp或者ftp。那么你挂的几率是很大的一、inotify介绍inotify-tools有两个命令//inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖... 查看详情
rsync+inotify实现实时同步(代码片段)
如果有一天去接受面试:面试官问你一个1t的文件需要进行传输,问题用何种方法。假如你答了scp或者ftp。那么你挂的几率是很大的 一、inotify介绍 inotify-tools有两个命令//inotify-tools是用c编写的,除了要求内核支持inot... 查看详情
inotify+rsync实现实时同步备份(代码片段)
第一个里程:将inotify软件安装成功yuminstall-yinotify-tools[[email protected]~]#rpm-qlinotify-tools/usr/bin/inotifywait<---实现对数据目录信息变化监控(重点了解的命令)/usr/bin/inotifywatch<---监控数据信息变化,对变化的数据进行统计[[emai... 查看详情
配置rsync+inotify实现站点文件实时同步(代码片段)
一、rsync简介rsync是linux系统下的数据镜像备份工具。可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。rsync... 查看详情
rsync+inotify远程实时同步(代码片段)
Rsync简介rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具RemoteSync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。官方网站:http://rsync.samba.org/开始部署Rsync1、在服务器A和服务器B上同时安装rsync服务和... 查看详情
配置inotify+rsync实时同步(代码片段)
rsync虽然可以实现快速备份,但是什么东西都不可能是十全十美的,作为计划任务备份,都是固定时间进行的,而且延迟明显、实时性差,当同步源长期不变化时,密集的定期任务是不必要的。实时备份就不同了,一旦同步源出... 查看详情