rsync+inotify 实现实时同步
发布日期:2021-09-16 04:38:44
浏览次数:36
分类:技术文章
本文共 2706 字,大约阅读时间需要 9 分钟。
rsync+inotify 实现实时同步 1、安装rsync 可以通过yum源安装rsync服务 [root@dg test]# yum install rsync 也可以通过安装源码包 wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz [root@dg test]#tar zxvf rsync-3.0.9.tar.gz [root@dg test]#cd rsync-3.0.9 [root@dg test]#./configure --prefix=/usr/local/rsync [root@dg test]# make [root@dg test]#make install make -j 4 # make编译,将源代码编译成二进制,可执行的文件 -j 4 使用4个进程同时编译,考虑cpu个数,不要超过cpu的个数 例如:在源端有个目录/tmp/test下有文件,都会同步目标端10.10.6.82:/data下,但是此方式只能手工同步,不能实现实时同步 [root@dg test]# rsync -azP --delete /tmp/test root@10.10.6.82:/data 注:rsync 是基于ssh 协议,需要知道对服务器端的root和密码 -a, archive(存档) 归档模式,表示以递归的方式传输文件,并且保持稳健的属性,等同于加了参数-riptgoD -z --compress 表示压缩 -P 显示传输速度 --delete 删除那些目标端位置有而原始位置没有的文件 添加ssh密钥服务,下次可以不用输入密码 [root@dg bin]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 1e:5f:6e:fe:15:a6:c1:12:d7:1d:4c:79:c5:9f:a3:9d root@dg 拷贝信任关系到目标端[root@dg .ssh]# ssh-copy-id root@10.10.6.82
查看目标段密钥已经过去 [root@rac2 .ssh]# ls authorized_keys known_hosts 不用输入密码登录10.10.6.82,此方式同步不用输入密码 [root@dg .ssh]# ssh root@10.10.6.82 Last login: Wed Jan 20 10:42:22 2016 from 10.10.8.54 [root@rac2 ~]# 2 安装inotify [root@dg test]#tar zxvf inotify-tools-3.14.tar.gz [root@dg test]# cd inotify-tools-3.14 [root@dg test]# ./configure --prefix=/usr/local/inotify [root@dg test]# make [root@dg test]# make install inotifywait -mrq -e create,move,delete,modify /tmp/test -e 用来指定要监控哪些事件 这些事件包括 create,创建,move 移动,delete 删除,modify修改内容 attrib 属性的更改 -m 表示持续监控 -r表示递归监控 -q表示简化输出信息 另外开了一个窗口: root@dg test]# cp /etc/group /tmp/test [root@dg ~]# inotifywait -mrq -e create,move,delete,modify /tmp/test /tmp/test/ CREATE group /tmp/test/ MODIFY group 从此可以看出 inotifywait 可以捕捉到创建文件的消息 3 创建rsync复制脚本 此项功能主要是将server端的目录/tmp里的内容,如果修改了(无论是添加、修改、删除文件)能够通过inotify监控到,并通过rsync实时的同步给client的/tmp里,下面是通过shell脚本实现的。 [root@dg test]# cat rsync.sh #!/bin/bash host=10.10.6.82 src=/data des=/data2 user=root /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 $src $user@$host:$des echo "${files} was rsynced" >>/rsync.log 2>&1 done 其中host是client的ip,src是server端要实时监控的目录,des是认证的模块名,需要与client一致,user是建立密码文件里的认证用户。 把这个脚本命名为rsync.sh,放到监控的目录里,比如我的就放到/tmp下面,并给予764权限,建议各位吧rsync的日志放到其他的目录下(非备份目录)。 [root@dg test]# chmod 764 rsync.sh 然后运行这个脚本 [root@dg test]# sh /tmp/rsync.sh & 我们还可以把rsync.sh脚本加入到开机启动项里 echo "/tmp/rsync.sh" >> /etc/rc.local 在源端目录添加或者删除文件,目标端的文件夹也会改变转载地址:https://blog.csdn.net/wll_1017/article/details/50549341 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年03月18日 10时40分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
400错误java_java代码转化成c#代码 报400错误
2019-04-21
java常见对象_Java 常见对象 02
2019-04-21
spring java配置_Spring Java配置要点
2019-04-21
后缀树建立 java_实用算法实现-第 8 篇后缀树和后缀数组 [2 最长公共子串]
2019-04-21
java网络编程期末试题_java网络编程面试题【其中一小部分】
2019-04-21
java如何做表单校验_微信小程序实现表单校验功能
2019-04-21
matlab dwt2(),MATLAB小波变换指令及其功能介绍(超级有用)
2019-04-21
php sequelize,egg.js整合数据库ORM框架Sequelize
2019-04-21
php同时打开2个数据库,thinkphp3.2同时连接两个数据库的简单方法
2019-04-21
centos 开发php扩展,centos 安装php扩展redis
2019-04-21
cms 单点登录 php,Yii2 中实现单点登录的方法
2019-04-21
oracle自己运行,创建Oracle自动执行Job
2019-04-21
chmod 赋权所有_chmod 权限 命令详细用法
2019-04-21