rsync+inotify实现主机之间目录实时同步
原理:
rsync:用于跨主机目录同步
inotify:用于监测目录变化
再编写一个触发脚本,一旦inotify检测到目录中内容发生变化,则调用rsync执行同步。
rsync服务器的的配置:
因为rsync是被xinetd守护,所以需要首先安装xinetd程序。
服务端配置:
安装阿里云epel源:
rpm -ihv https://mirrors.aliyun.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install xinetd -y 安装守护进程xinetd
service xinetd start
yum install rsync -y 安装rsync
使xinetd监听rsync:
vim /etc/xinetd.d/rsync #启用rsync
将其中的disable = yes 改为disable = no
service xinetd restart
编辑主要配置文件 /etc/rsyncd.conf 这个文件需要自己创建
vim /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log #最好指明日志文件目录,一旦出错才好查看日志排查
[web]
path = /rsync
list = false
read only = no 一定要关闭只读,因为默认只读客户端是没有权限拉取数据的。
#hosts allow = 192.168.9.195/255.255.255.0
#hosts deny = 0.0.0.0/32
auth users = test #指明用于认证的用户,到时候其它主机来同步文件就要以这个用户的身份
secrets file = /etc/test.pass #指明用于保存密码的文件路径
每一个“[]”下面的为一个模块,path是它所映射的目录,当同步这个模块时,便是同步path下面的目录中的内容
编辑服务器的密码文件 /etc/test.pass
vim /etc/test.pass
test:123456 这个用户和密码需要是实际存在的系统用户,到时候客户端来同步数据时就是以这个身份
chmod 600 /etc/test.pass
客户端配置:
客户端主要是要去同步服务端的配置,rsync默认是安装了的,若没有可以自行安装
yum install rsync -y 安装rsync
编辑rsync连接时的密码文件 /etc/rsync_client.pass
vim /etc/rsync_client.pass
123456 # 只需要配置连接时使用的密码即可,必须与服务器上定义的密码相同.
chmod 600 /etc/rsync_client.pass
配置好服务端和客户端之后就可以进行同步测试了
rsync命令的使用:
rsync 可以相当于复制命令,会将指定内容复制到目标位置
-a 保留文件所有属性复制
-n:测试,在不确定命令是否能按照意愿执行时,务必要实现测试
-v:详细输出模式,--verbose
-q:--quiet,静默模式
-c:--checksum,开启校验功能,强行对文件传输进行校验
-r:--recursive,递归复制
-a: --archives.归档,保留文件的原有属性相当于rlptgoD的选项组合wKioL1gEMvXRMZ5SAAAitet95ug281.png-p:--perms 保留文件的权限
-t: --times 保留文件的时间戳
-l:--links 保留文件的符号链接
-g:--group保留文件的属组
-o:--owner 保留文件的属主
-D:--devices 保留设备文件
-e ssh:表示使用ssh协议作为继承
-z:对文件压缩后传输
--progress:显示进度条
注意:
rsync命令使用中,如果源参数的末尾有斜线,只会复制指定目录的内容,而不复制目录本身,没有斜线,则会复制目录本身,包括目录
客户端从服务端拉取数据:
rsync -avzP test@192.168.0.106::web /rsync --password-file=/etc/rsync_client.pass
客户端向服务端推送数据:
rsync -avzP /rsync test@192.168.0.106::web --password-file=/etc/rsync_client.pass
安装inotify:
yum install inotify-tools -y
安装之后会在服务器上生成两个二进制程序:inotifywait inotifywatch
我们主要是利用inotifywait 来监测目录变化。
在客户端添加实时同步脚本:
#!/bin/bash
# tools : inotifywait and rsync
/usr/bin/inotifywait -mrq --exclude '.*/*\.(swp|swx|.*~)$' --timefmt '%y/%m/%d/%H:%M' --format '%T %w %f %e' -e modify,delete,create,move /rsync | while read events ; do
rsync -vzrtopg --progress --delete --password-file=/etc/rsync_client.pass /rsync test@192.168.0.106::web
done
之后将脚本挂在后台运行就可以了
rsync+inotify实现主机之间目录实时同步的更多相关文章
- rsync+inotify实现服务器之间文件实时同步--转
之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道 ...
- linux系统中rsync+inotify实现服务器之间文件实时同步
最近需要对服务器上的文件实施动态备份,我又不想每次都手动来进行备份,在网上找了挺多资料,发现使用rsync就可以实现,如果想要实现实时同步,还可以使用rsync+inotify组合,本文就是以组合方式 ...
- linux下rsync+inotify实现服务器之间文件实时同步
先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例 ...
- centos6.5 rsync+inotify实现服务器之间文件实时同步
1. rsync的优点与不足 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据 ...
- rsync+inotify 实现服务器之间目录文件实时同步(转)
软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...
- Centos 6.5 rsync+inotify 两台服务器文件实时同步
rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...
- rsync+inotify实现多台服务器之间数据实时同步
配置环境 1.操作系统:CentOS6.5-X86_64 2.rsync客户端(rsync+inotify):192.168.200.82 3.rsync服务端:192.168.200.80,192. ...
- inotify+rsync目录实时同步
两台linux服务器系统CentOS7 一台Apache IP:192.168.155.130(发布文件服务器,也可以叫rsync客户端) 一台nginx IP:192.168.155.131(同步镜 ...
- 使用rsync+inotify实现/www目录实时同步
一.实现bak-server 1.1安装rsync # yum -y install rsync 1.2修改配置文件 # vi /etc/rsyncd.conf #添加下面内容 uid=test gi ...
随机推荐
- 在多租户(容器)数据库中如何创建PDB:方法6 DBCA本地克隆PDB
基于版本:19c (12.2.0.3) AskScuti 创建方法:DBCA静默本地克隆PDB.根据 CDB1 中的 PDB1 克隆出 CDB1 中的 PDB_CLONE 对应路径:Creating ...
- Linux内核源码阅读记录一之分析存储在不同段中的函数调用过程
在写驱动的过程中,对于入口函数与出口函数我们会用一句话来修饰他们:module_init与module_exit,那会什么经过修饰后,内核就能狗调用我们编写的入口函数与出口函数呢?下面就来分析内核调用 ...
- 关于Javaweb的比较好用的jar包概述
(连接数据库之前首先要导入这个数据库的驱动jar包 例如mysql 为mysql-connector-java-5.1.46.jar) 关于连接数据库的数据库连接池c3p0 jar包: c3p0-0 ...
- nginx知识学习
设备: macbook 有用的命令行: sudo nginx -t 测试nginx是否正常 sudo nginx -s reload 平滑重启 配置目录: /usr/local/etc/nginx ...
- JS table新增一行的时候 如何在新增的这一行把样式也加进去 例如变成<tr class="trd0">
JS table新增一行的时候 如何在新增的这一行把样式也加进去 例如变成<tr class="trd0">5 JS: var tab = document.get ...
- Customized Mini LED Keychain For Better Brand Identity
Looking for products that tell people the brand name? Then you'll find an affordable product that wi ...
- 关于我 & 关于这个博客
关于我 OIer,初一在读,蒟蒻,普及组选手,只拿过两次PJ2=,实乃菜也 喜欢数学,OI,OI 上主要研究高级数据结构(如平衡树)和一些不那么暴力的算法(如分块) 打不动 CF . 关于这个博客 是 ...
- php对字符串的操作3之 字符类型转换详解
所有的数据输出到屏幕上,实际上被隐式的转换成了字符型,首先了解下各种数据类型的字符串表示 <?php echo 300,'<hr>'; echo true,'<hr>'; ...
- MyBatis(7)——使用注解开发
说明:注解就是利用接口实现的,因此转为面向接口编程,使用接口开发拓展性好.分层开发时上层不用管理具体的实现.更加标准化更加规范.使得各个层的耦合度更低. 注:有了注释语句就不需要实体类的mapper文 ...
- jmeter的使用---控制器
1.如果(If)控制器.Switch Controller if控制语句,判断字段是否存在,或者符合,执行不同的逻辑 2.简单控制器 一次进件流程,需要不同模块的数据,例如登陆,提交个人信息,信用认证 ...