linux学习笔记-实时同步数据方案(inotify+rsync)
2017-11-06 23:44
405 查看
实时同步数据方案(inotify+rsync)
172.16.1.8 web01
web01服务器安装rsync客户端,inotify,安装过程参见前面文章。
2、可以将脚本设置为开机启动,实时监控。
3、设置脚本后台运行命令:&;查看后台脚本:jps;结束运行kill % JID
4、第三方软件的同步功能:mysql同步,oracle,mongodb
第1章 实现思路
1.1文件或目录监控
使用inotify工具对文件或目录实时监控。1.2文件上传
使用rsync服务来上传文件或目录。第2章 实现过程
2.1服务规划
2.1.1服务器规划表
rsync服务器端 | 1台 | 运行rsync进程,提供远程同步服务 |
rsync+inotify客户端 | 1台 | 监控文件或目录的变化后,通过rsync传输 |
说明:总共需要2台服务器完成本次项目 |
2.1.2主机IP规划表
服务器说明 | IP地址 | 主机名称规则 |
rsync服务器端 | 172.16.1.41/24 | backup |
rsync+inotify客户端 | 172.16.1.8/24 | web01 |
2.1.3主机名解析
172.16.1.41 backup172.16.1.8 web01
2.2软件安装
backup服务器安装rsync服务端,安装过程参见前面文章。web01服务器安装rsync客户端,inotify,安装过程参见前面文章。
2.3开发inotify客户端脚本
2.3.1创建需要监听的目录及文件
在web01服务器上用/backup目录来做测试:[root@web01 ~]# mkdir /backup && ls -ld/backup drwxr-xr-x 2 root root 4096 Nov 5 19:52 /backup
2.3.2实现监控功能
[root@web01 backup]# touch test #<==在监控目录下创建一个test文件 [root@web01 ~]# /usr/bin/inotifywait -mrq--format '%w%f' -e create,delete /backup/ #<==目录监控 /backup/test
2.3.3实现文件传输功能
[root@web01 backup]# rsync -avz testrsync_backup@172.16.1.41::inotify_backup--password-file=/etc/rsync.password #<==上传文件到指定的服务器 sending incremental file list test sent 61 bytes received 27 bytes 176.00bytes/sec total size is 0 speedup is 0.00 [root@backup inotify_backup]# pwd &&ls #<==验证上传的服务器 /inotify_backup test
2.3.4开发脚本
在客户端开发脚本如下:#!/bin/bash #Defien var Ip=`ifconfig eth1 | awk -F "[ :]+"'NR==2{print $4}'` ServerIp=172.16.1.41 #<==这是Rsync服务端的地址 BackPath=/backup #<==需要监控的某个目录 User=rsync_backup #<==rsync的匿名访问用户 Moudle=inotify_backup #<==rsync服务的模块 passwd=/etc/rsync.password #<==rsync服务的客户端密码文件 #upload single file function upload(){ rsync -az$file $User@$ServerIp::$Moudle/$Ip --password-file=$passwd } #full upload function full_upload(){ cd$BackPath &&\ rsync -az--delete ./ $User@$ServerIp::$Moudle/$Ip --password-file=$passwd } #monitor paht /backup function monitor(){ /usr/bin/inotifywait -mrq --format '%wf%' -eclose_write,delete $BackPath \ | while read file do if [ -f$file ];then upload &>/dev/null else full_upload &>/dev/null fi done } function main(){ monitor } main
2.4结果测试
2.4.1运行脚本
因为是一个实时的监控服务,所以我们用后台运行&的命令来执行。[root@web01 scripts]# pwd /service/scripts [root@web01 scripts]# ll total 4 -rwxr--r-- 1 root root 855 Nov 5 20:24 inotify_monitor.sh [root@web01 scripts]# /bin/sh inotify_monitor.sh& #<==没有结果就是最好的结果 [root@web01 scripts]# jobs #<==可以使用jobs命令来查看后台运行的脚本 [1]+ Running shinotify_monitor.sh &查看脚本是否运行
[root@web01 backup]# jobs [1]+ Running sh/service/scripts/inotify_monitor.sh &结束后台运行的脚本
[root@web01 backup]# kill % 1 #<==这个1是jobs的进程号 [1]+ Terminated sh/service/scripts/inotify_monitor.sh [root@web01 backup]# jobs [root@web01 backup]#
2.4.2创建文件测试
在监控目录下创建一个test文件,然后在服务器端查看结果。[root@backup inotify_backup]# ll #<==首先服务器端下面是空的 total 0 [root@web01 backup]# touch test #<==客户端执行创建文件命令,生成一个test文件 [root@web01 backup]# ls test [root@backup inotify_backup]# ll #<==查看服务器端生成了一个客户IP的文件夹 total 4 drwxr-xr-x 2 rsync rsync 4096 Nov 5 20:32 172.16.1.8 [root@backup inotify_backup]# tree172.16.1.8/ #<==可以看到该文件下面有新建的test文件,成功! 172.16.1.8/ └── test 0 directories, 1 file
2.4.3添加内容测试
[root@web01 backup]# echo "hello world">> test #<==客户端给test文件添加字符 [root@web01 backup]# cat test hello world [root@backup inotify_backup]# cat172.16.1.8/test #<==服务器端也同步过来了 hello world
2.4.4删除测试
[root@web01 backup]# rm -f test #<==客户端删除文件 [root@web01 backup]# ls [root@backup 172.16.1.8]# ll #<==服务器端也没有文件了 total 0
2.4.5执行过程分析
[root@web01 backup]# sh -x/service/scripts/inotify_monitor.sh ++ ifconfig eth1 ++ awk -F '[ :]+' 'NR==2{print $4}' + Ip=172.16.1.8 + ServerIp=172.16.1.41 + BackPath=/backup + User=rsync_backup + Moudle=inotify_backup + passwd=/etc/rsync.password + main + monitor + /usr/bin/inotifywait -mrq --format %w%f -eclose_write,delete /backup + read file + '[' -f /backup/test ']' + upload + rsync -az /backup/test rsync_backup@172.16.1.41::inotify_backup/172.16.1.8--password-file=/etc/rsync.password + read file + '[' -f /backup/test ']' + upload + rsync -az /backup/testrsync_backup@172.16.1.41::inotify_backup/172.16.1.8--password-file=/etc/rsync.password + read file + '[' -f /backup/test ']' + full_upload + cd /backup + rsync -az --delete ./rsync_backup@172.16.1.41::inotify_backup/172.16.1.8--password-file=/etc/rsync.password + read file
第3章 小结
1、inotify(sersync) + rsync,是文件级别的实时同步。2、可以将脚本设置为开机启动,实时监控。
3、设置脚本后台运行命令:&;查看后台脚本:jps;结束运行kill % JID
4、第三方软件的同步功能:mysql同步,oracle,mongodb
相关文章推荐
- rsync+inotify-tools实现数据实时同步方案
- rsync数据镜像备份+inotify实时同步的简单实现
- rsync+inotify实现数据实时同步
- Rsync+inotify-tools数据实时同步
- rsync+inotify打造自动实时同步数据
- Linux学习--rsync+inotify实现数据实时同步
- rsync+inotify实现数据实时同步
- Centos 6下利用rsync+inotify实现数据实时同步
- Linux下Rsync+Inotify-tools实现数据实时同步
- rsync+inotify实现数据的实时同步
- rsync+Inotify实现数据的实时同步更新
- rsync+inotify实现数据的实时同步与备份
- rsync+Inotify实现数据的实时同步更新
- rsync+inotify实现数据实时同步备份
- rsync+inotify实现数据的实时同步
- rsync+Inotify实现数据的实时同步更新
- rsync+inotify-tools实时数据同步配置实战
- Rsync+Inotify实现数据实时同步
- rsync+Inotify实现数据的实时同步更新
- 通过rsync+inotify实现数据的实时同步