rsync + inotify 打造多server间文件实时同步
在上篇文章ssh无password登陆server的基础之上。能够利用rsync + Inotify 在多server间实现文件自己主动同步。
例如以下測试机基于三台server做的。内网IP分别例如以下:
172.16.3.91 (主机)
172.16.3.92 (备份机1)
172.16.3.89 (备份机2)
如今想对主机上的/opt/sites/yutian_project文件夹下相关文件的不论什么操作同步到2台备份机上。
1.安装rsync
在三台机器上分别检查是否安装了rsync
[root@rs-1 ~]# rsync --version
rsync version 2.6.8 protocol version 29
Copyright (C) 1996-2006 by Andrew Tridgell, Wayne Davison, and others.
<http://rsync.samba.org/>
Capabilities: 64-bit files, socketpairs, hard links, ACLs, xattrs, symlinks, batchfiles,
inplace, IPv6, 64-bit system inums, 64-bit internal inums
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
若没有安装,安装下。因为安装过程比較简单,就不介绍了。
1.查看内核是否支持Inotify特性.
Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持。通过Inotify能够监控文件系统中加入、删除。改动、移动等各种细微事件,利用这个内核接口,第三方软件就能够监控文件系统下文件的各种变化情况,而inotify-tools就是这种一个第三方软件。
[root@rs-1 ~]# ll /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 May 8 08:20 max_queued_events
-rw-r--r-- 1 root root 0 May 8 08:20 max_user_instances
-rw-r--r-- 1 root root 0 May 8 08:20 max_user_watches
能看到这个三个文件,说明是默认支持lnotify特性的。
2.安装inotify-tools
下载地址:http://sourceforge.net/projects/inotify-tools/
下载之后编译安装
[vagrant@rs-1 download]$ tar -zxvf inotify-tools-3.13.tar.gz
[vagrant@rs-1 inotify-tools-3.13]$ ./configure
[vagrant@rs-1 inotify-tools-3.13]$ make
[vagrant@rs-1 inotify-tools-3.13]$ sudo make install
安装之后生成例如以下2个命令
[vagrant@rs-1 inotify-tools-3.13]$ inotifywa
inotifywait inotifywatch
如今编写同步shell脚本
[vagrant@rs-1 work]$ vi inotify_rsync_multl.sh
#!/bin/sh
#set -x
#var
src="/opt/sites/yutian_project/apps /opt/sites/yutian_project/statics /opt/sites/yutian_project/templates"
des_ip="172.16.3.92 172.16.3.89"
#function
inotify_fun ()
{
/usr/local/bin/inotifywait -mrq -e modify,delete,create,move $1 | while read time file
do
for ip in $des_ip
do
echo "`date +%Y%m%d-%T`: rsync -avzq --delete --progress $1 $ip:/opt/sites/yutian_project"
rsync -avzq --exclude=logs/* --delete --progress $1 $ip:/opt/sites/yutian_project/
echo
done
done
}
#main
for a in $src
do
inotify_fun $a &
done
运行inotify_rsync_multi.sh就能够了。
如今主机上的相应文件夹上有不论什么操作,就会同步到备份机上。
rsync + inotify 打造多server间文件实时同步的更多相关文章
- rsync+inotify 实现服务器之间目录文件实时同步(转)
软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...
- Linux服务器间文件实时同步的实现
使用场景 现有服务器A和服务器B,如果服务器A的指定目录(例如 /home/paul/rsync/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /home/ ...
- rsync+inotify-tools文件实时同步
rsync+inotify-tools文件实时同步案例 全量备份 Linux下Rsync+sersync实现数据实时同步完成. 增量备份 纯粹的使用rsync做单向同步时,rsync的守护进程是运行在 ...
- inotify用法简介及结合rsync实现主机间的文件实时同步
一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...
- Centos 6.5 rsync+inotify 两台服务器文件实时同步
rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...
- (转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步
Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80 ...
- rsync+inotify百万级文件实时同步
实验环境:Centos7.4 目的:将源服务器的文件实时同步至目标服务器 源服务器:10.11.1.107 目标服务器:10.11.1.106 分别在两个节点安装rsync yum -y instal ...
- centos文件实时同步inotify+rsync
我的应用场景是重要文件备份 端口:873,备份端打开即可 下载地址:https://rsync.samba.org/ftp/rsync/src/ 服务端和客户端要保持版本一致 网盘链接:https:/ ...
- sersync+rsync实现服务器文件实时同步
sersync+rsync实现服务器文件实时同步 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.sersyn ...
随机推荐
- Horspool和BM算法解析
最近算法中学到了Horspool,KMP,BM三种算法.接下来给大家做个分享. Horspool算法: 算法思路: 1.分为匹配串,原串 2.从右往左依次匹配: 一旦遇到不匹配的,原串相对于匹配串 移 ...
- [转]linux之磁盘配额(quota)
转自:http://www.jb51.net/LINUXjishu/78446.html 磁盘配额(quota)比较常用的几个情况是: * 针对WWW server,例如:每个人的网页空间的容量限制 ...
- 研磨JavaScript系列(四):代码的时空
对于过程式编程来说,代码执行的时间与数据标识的空间是密不可分的.我们只有把指令执行的具体时刻与标识映射的具体地址结合起来,才能确定程序在执行瞬间的上下文状态.于是,代码时刻与数据标识的结构,就形成了作 ...
- bootstrap图标乱码问题-解决方案
楼主在使用bootstrap时,出现了图标乱码问题,经过多次查找,才解决了问题(最后发现真的是很好解决的问题(^^)) 如果出现乱码 请直接在自己写的CSS中重新引入一下font文件中的字体就好了 @ ...
- C#——简单工厂
简单工厂的方法实现过程核心就是之前介绍的接口应用.所以直接上代码: public interface IPerson { void Say(); } public class Student : IP ...
- sublime之markdown快捷键
目录 sublime 快捷键 markdown技能 sublime 快捷键 ctrl + shift + p 进入命令面板 package install 进入下载仓库 ctrl + alt + O ...
- Ubuntu 关闭guest用户
Ubuntu 关闭guest用户 ca0gu0@ub:~$ cat /etc/lightdm/lightdm.conf [SeatDefaults]autologin-user=falseallow- ...
- Intellij Idea 创建一个Web项目
今天想用IDEA创建一个web项目: 准备工具 1.jdk1.7 2.tomcat6.0,由于下载的8.5没有lib目录不能配置改6.0 3.idea2019.1.2 Intellij Idea的安装 ...
- Array.prototype.slice.call()的理解
最近在看廖雪峰的JS课程,浏览器中的操作DOM的那一章,有这样一道题. JavaScript Swift HTML ANSI C CSS DirectX <!-- HTML结构 --> & ...
- Luogu P3901 数列找不同
由于技术原因,题目我贴不上了,大家点下面的链接自己去看吧^_^ P3901 数列找不同 这题第一眼看去,题面真短,有坑(flag) 在往下面看去,woc数据这么大,你要怎样. 现在一起想想想,超级侦探 ...