rsync+inotify实现文件实时同步-步骤详解

实验拓扑(centos7下):192.168.80.181 服务器端(主机名www.aa.com)
192.168.80.182 客户端(主机名www.ab.com)
1、使用SSH源:安装rsync,服务端和客户端同时安装,只使用客户端命令就OK了。
systemctl stop firewalld
setenforce 0
yum install -y rsync
---以上三句在服务器端和客户端都要执行---------
rsync -avz [email protected]:/tmp/ /opt/ //在客户端执行,把服务器端tmp目录的内容同步到客户端opt目录下

rsync -rlvz /opt/ [email protected]:/tmp/ //在客户端执行,把客户端本机的opt目录同步给181主机的tmp目录

同步前181主机:

同步后181主机:

//如果避免交互的话需要配置公钥验证。以下两句实现在182主机上产生公钥与私钥,把本机公钥传给181主机,这样下次在182主机上使用同步命令时不需要输入181主机密码,即避免交互。
//如果要实现在181主机上使用同步命令时不需要输入182主机密码,只需把IP地址修改为182
[[email protected] ~]# ssh-keygen -t rsa //跳出语句一直enter就行
[[email protected] ~]# ssh-copy-id [email protected]

-----------------------------在客户端验证同步测试-------------------------
181 /var/www/html 下有A开头文件,客户机/tmp下有B开头文件,执行下面命令后客户机上B开头文件应该被删除:
[[email protected] ~]# rsync -avz --delete [email protected]:/var/www/html/ /tmp/ //--delete的作用

2.使用RSYNC作为源:需要配置RSYNC服务端程序
-------新建并配置rsync源服务器使其可以被同步(读取或写入)------
vi /etc/rsyncd.conf
uid = nobody //运行用户
gid = nobody //运行用户组
use chroot = yes //禁锢在源目录
address = 192.168.80.181 //监听地址
port 873 //监听端口
log file = /var/log/rsyncd.log //日志文件位置
pid file = /var/run/rsyncd.pid //存放进程ID的文件位置
hosts allow = 192.168.80.0/24 //允许访问的客户端地址
[wwwroot] //共享模块名称
path = /var/www/html //源目录实际路径
comment = Document Root of www.benet.com //说明
read only = yes //是否为只读
dont compress = .gz .bz2 .tgz .zip .rar .z //同步时不再压缩的文件类型
auth users = backuper //授权账户
secrets file = /etc/rsyncd_users.db //存放账户信息的数据文件
:wq
----建立虚拟用户配置文件并设置恰当的权限-----
[[email protected] ~]# vi /etc/rsyncd_users.db
backuper:123123 //无需建立同名系统账户,这里是虚拟用户
:wq
[[email protected] ~]# chmod 600 /etc/rsyncd_users.db //由于账号明文存放,因此要调整文件权限,避免账号信息泄露
//备份用户backuper需要对源目录/var/www/html/有相应读取权限,实际上,只要other组有读取权限,授权用户backuper和运行用户nobody也就有读取权限了。

//如果目录不存在就新建一个
----启动、关闭rsync程序---
[[email protected] ~]# rsync --daemon
[[email protected] ~]# netstat -anpt | grep rsync

关闭rsync程序:
[[email protected] ~]# killall -3 rsync //没有killall命令就执行yum install psmisc -y安装

再次启动:

如果出现上述错误,只需rm -rf /var/run/rsyncd.pid,之后再去启动就可以了。
------------在客户端测试同步情况------
[[email protected] ~]# rsync -avz [email protected]::wwwroot/ /tmp/ //把服务器上源目录的文件下载到本地tmp目录下


[[email protected] ~]# rsync -avz /bin/b* [email protected]::wwwroot //把本地的文件上传到服务器(注意服务器端目录本身以及程序的权限)

出现上述错误,是因为服务器端rsync的配置文件中read only是只读,没有写入权限,且目录本身没有赋予other写入的权限
[[email protected] ~]# chown nobody /var/www/html/
[[email protected] ~]# vi /etc/rsyncd.conf //修改read only的值为no

此时无需重启服务,再次执行同步命令:


----使客户端使用rsync备份时不需要密码交互----
[[email protected] ~]# export RSYNC_PASSWORD=123123 //临时生效,关机后失效
//以下配置永久生效
[[email protected] ~]# vi /etc/profile
export RSYNC_PASSWORD=123123 添加到最后一行下
[[email protected] ~]# source /etc/profile
3.配置rsync+inotify实时同步
----编译安装inotify(被备份主机上做)----
[[email protected] ~]# tar xf inotify-tools-3.14.tar.gz -C /opt
[[email protected] ~]# cd /opt/inotify-tools-3.14/
[[email protected] ~]# ./configure
[[email protected] ~]# make && make install
-------配合inotify触发备份、调整内核参数(在被备份主机181上改)----
[[email protected] ~]# vi /etc/sysctl.d/te.conf
fs.inotify.max_queued_events = 16384 //监控队列大小
fs.inotify.max_user_instances = 1024 //最多监控实例数
fs.inotify.max_user_watches = 1048576 //每个实例最多监控文件数
:wq
[[email protected] ~]# sysctl -p //初始化
-----测试监控效果------
[[email protected] ~]# inotifywait -mrq -e modify,create,move,delete /opt/test/ //m(持续监控)r(递规整个目录)q(简化输入信息) -e指定监控的事件:向被监控的目录写入或者其它操作时会有输出。

---通过脚本完成触发备份任务,这里只要/opt//test/目录下有新建修改移除删除等动作时,会完全备份到/var/www/html/目录下-----
[[email protected] ~]# vi /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /opt/test/"
RSYNC_CMD="rsync -azH --delete /opt/test/ [email protected]::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 5 ] ; then
$RSYNC_CMD
fi
done
:wq

[[email protected] ~]# sh /opt/inotify_rsync.sh &
-----测试查看------
[[email protected] ~]# rm -rf /opt/test/t2

原文地址:http://blog.51cto.com/12385631/2091738

时间: 2024-10-27 03:33:56

rsync+inotify实现文件实时同步-步骤详解的相关文章

Rsync+inotify实现文件实时同步

数据备份.文件备份是运维.DBA等岗位最熟悉不过的话题,这里不介绍数据库的备份,简单介绍一下文件同步工具,这样的工具有很多,Windows环境下有Goodsync.FreeFileSync等,Linux下rsync.unison等,常用的实时同步,是几种工具的组合,经过组合的工具达到文件实时同步的效果. 一.常用实时同步方案 1.NFS网络文件系统 该方案是分布式架构中,解决不同节点对同一资源访问的问题,搭建NFS服务器,将其挂载在不同的节点,每个节点将公用的数据存储在NFS服务器上,实现文件的

基于rsync+inotify实现文件实时同步

rsync英文名remote  synchronization,可使本地和远程两台主机之间的数据快速复制同步镜像 远程备份的功能,rsync在拷贝时候会先比较源数据跟目标数据,不一致才复制,实现增量拷贝 监听于873/tcp rsync有许多选项: -n: 在不确定命令是否能按意愿执行时,务必要事先测试:-n可以完成此功能: -v: --verbose,详细输出模式 -q: --quiet,静默模式 尽可能输出少 -c: --checksum,开启校验功能,强制对文件传输进行校验 -r: --r

利用rsync+inotify实现数据实时同步脚本文件

将代码放在Server端,实现其它web服务器同步.首先创建rsync.shell,rsync.shell代码如下: #!/bin/bash host1=133.96.7.100 host2=133.96.7.101 host3=133.96.7.102 src=/data/www/ dst1=web1 dst2=web2 dst3=web3 user1=web1 user2=web2 user3=web3 /usr/local/inotify/bin/inotifywait -mrq --ti

sersync基于rsync+inotify实现数据实时同步

一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192.168.1.243 实时同步/var/atlassian目录到从服务器. 二.实施 1.从服务器192.168.1.243 rsync服务搭建 1.1安装软件包 wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz tar xf r

[转帖]sersync基于rsync+inotify实现数据实时同步

sersync基于rsync+inotify实现数据实时同步 https://www.jianshu.com/p/d532a34e5cc5 前言 提到数据同步就必然会谈到rsync,一般简单的服务器数据传输会使用ftp/sftp等方式,但是这样的方式效率不高,不支持差异化增量同步也不支持实时传输. 原文地址:https://www.cnblogs.com/nbxcnxvcnb/p/12393252.html

rsync+inotify安装配置 实时同步文件

安装 #安装inotify 工具 [root@localhost ~]# yum install inotify-tools -y 常用命令 [[email protected] ~]# inotifywait -rm /data/ \\实时监控/data的所有事件(包括文件的访问.写入.修改.删除等) [[email protected] ~]# inotifywait -mrq --timefmt '%Y/%m/%d-%H:%M:%S' --format '%T %w %f' > -e mo

rsync+inotify实现数据实时同步备份

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性.可靠性.时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记. 实验背景: 操作系统          IP         机器名        角色 CentOS 7.2       172.16.22.1     nginx01        数据源(服务器端) CentOS 7.2       172.16.22

rsync + inotify 实现数据实时同步

要求:两台Web服务器实现数据同步(我这里使用的是Centos 6.2-x64) 服务器一:172.16.11.126 服务器二:172.16.11.127 一.配置ssh备份源172.16.11.126(这里推荐使用专用的普通用户,注意相应的权限问题,如遇特殊情况使用root用户也可以,即不用考虑权限问题了. ) 1.新建备份用户rget rput 分别用来上传下载 [root@localhost ~]#  useradd rget [root@localhost ~]#  useradd r

Linux-rsync+inotify目录文件实时同步备份

1.环境介绍 192.168.1.2 (rsync+inotify)-----------FTP 192.168.1.3 (rsync)---------------------backup 实验目的: 实时自动同步:192.168.1.2 ------->192.168.1.3到目录:/data/ftpdata ; 一.FTP服务器(rsync+inotify) 1.准备软件包 [[email protected] ~]# mkdir /data/ftpdata [[email protect