rsync+notify 同步(异步方式)文件

同步文件,多个主机。可以做图片服务同步,代码管理同步等。通过异步方式同步,监控到文件的变化。同步更新变化的内容,效率比较好。

环境说明

服务类型 IP地址 应用 操作系统
源服务器 192.168.217.151 rsync inotify-tools 脚本 centos7/redhat7
目标服务器 192.168.217.150 rsync centos7/redhat7

在目标服务器上做以下配置

1.关闭防火墙与SELINUX

# systemctl stop firewalld
# systemctl disable firewalld
# sed -ri ‘s/^(SELINUX=).*/\1disabled/g‘ /etc/sysconfig/selinux
# getenforce 0

2.安装rsync服务端软件

#yum -y install rsync

3.设置rsyncd.conf配置文件(前后不要有空格)test为同步的文件夹

# vim /etc/rsyncd.conf

log file = /var/log/rsyncd.log//日志文件位置,启动rsync后自动产生,无需提前创建pidfile = /var/run/rsyncd.pid //pid文件存放位置lock file = /var/run/rsync.lock//支持max connections参数的锁文件secrets file = /etc/rsync.pass//用户认证配置文件,里面存放用户名称和密码,必须手动创建这个文件    [etc_from_client]//自定义同步名称path = /test/ //rsync服务端存放路径,客户端的数据将同步到此目录comment = sync etc from clientuid = root//设置rsync运行权限为rootgid = root//设置rsync运行权限为rootport = 873//默认端口为873ignore errors//表示出现错误忽视错误use chroot = no//默认为true ,修改为no,增加对目录软链接的备份read only = no//设置rsync服务端为读写权限list = no//不显示rsync服务端资源列表max connections = 200//最大连接数timeout = 600//设置超时时间auth users = admin//执行数据同步的用户名,可以设置多个,用英文逗号隔开hosts allow = 192.168.217.151//允许进行数据同步的IP地址,可以设置多个,用英文逗号隔开

4.创建存放路径目录

# mkdir /test

5.创建用户认证文件

echo ‘admin:111‘ > /etc/rsync.passcat /etc/rsync.pass

6.设置文件权限

chmod 600 /etc/rsync* ll /etc/rsync*

7.启动rsync服务并设置开机自启动

# systemctl start rsyncd
# systemctl enable rsyncd

在源服务器上做以下部署:

1.关闭防火墙与SELINUX

#  systemctl stop firewalld
# systemctl disable firewalld
#  sed -ri ‘s/^(SELINUX=).*/\1disabled/g‘ /etc/sysconfig/selinux
# setenforce 0 
2.安装rsync服务端软件

yum -y install rsync

3.创建认证密码文件

echo ‘111‘ > /etc/rsync.pass
# cat /etc/rsync.pass

4.设置文件权限,只设置文件所有者具有读取、写入的权限

# chmod 600 /etc/rsync.pass
# ll /etc/rsync.pass

5.在源服务器上创建测试目录,然后在源服务器上运行以下命令

rsync -avH --port 873 --progress --delete /root/etc/ [email protected]192.168.217.150::etc_from_client --password-file=/etc/rsync.pass

6.运行完成后在目标服务器上查看,在/test/目录下有test目录,说明数据同步成功

ls /test

7.安装inotify-tools工具,实时触发rsync同步

检查服务器内核是否支持inotify,如果有这三个max开头的文件则表示服务器内核支持inotify
ll /proc/sys/fs/inotify/
yum -y install make gcc gcc-c++ inotify-tools

8.写同步脚本

# mkdir /scripts

# touch /scripts/inotify.sh
# chmod 755 /scripts/inotify.sh
# ll

# vim /scripts/inotify.sh
 host=192.168.217.150 //目标服务器的ip(备份服务器)
src=/test //在源服务器上所要监控的备份目标
des=etc_from_client //自定义的模块名,需要与目标服务器上的定义名称同步
password=/etc/rsync.pass //执行数据同步的密码文件
user=admin  //执行数据同步的名
inotifywait=/usr/bin/inotifywait

$inotifywait -mrq --timefmt ‘%Y%m%d %H:%M‘ --format ‘%T %w%f%e‘ -e modify,delete,create,attrib $src | while read files ; do
    rsync -avzP --delete  --timeout=100 --password-file=${password} $src [email protected]$host::$des
    echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done

//检查脚本
# bash -x /scripts/inotify.sh

//启动脚本
nohup bash /scripts/inotify.sh &
# ps -ef|grep inotify

9.设置脚本开机自动启动

# chmod +x /etc/rc.d/rc.localll /etc/rc.d/rc.localecho ‘nohup /bin/bash /scripts/inotify.sh‘ >> /etc/rc.d/rc.localtail  /etc/rc.d/rc.local

10.谁便在根目录test里边建点文件,到目标服务器上查看是否把新生成的文件自动传上去了


 
 
 


 
 
 


 


 

 
 

原文地址:https://www.cnblogs.com/cx558/p/9547398.html

时间: 2024-07-29 14:24:18

rsync+notify 同步(异步方式)文件的相关文章

记一次rsync增量同步远程服务器文件

rsync remote shell 增量方式同步数据 rsync同步文件有两种方式,一种是daemon的方式(rsync daemon)另一种方式是通过远程shell方式(rsync remote shell). 两种方式的区别 daemon方式,这种方式通过TCP方式连接远程rsync daemon,需要使用配置文件,并启用daemon进程. rsync [OPTION] user@host::src dest rsync [OPTION] src user@host::dest remot

rsync服务同步、日志文件、screen工具

10.32 rsync通过服务同步(上) 在使用该方法进行同步之前需要先在服务的开启相应服务同时要监听一个端口(可自定义),默认是监听873端口,开启服务之前编辑rsync配置文件"/etc/rsyncd.conf"(将服务添加进去)然后直接使用命令:"rsync --daemon(服务名称)"进行同步.或者将配置文件写到一个自定义文件中,使用命令"rsync --configfile"进行同步.配置完成后客户端可以通过指定端口与服务端进行通信.

Rsync 自动同步压缩日志文件至备份服务器

业务场景:将所有服务器内的日志文件以小时为单位压缩后保存同时清空源日志文件.此后通过rsync + inotify 机制将压缩文件统一备份到日志服务器内.实现对日志文件的统一保存和备份.rsync 和inotify这里就不介绍了!有兴趣的可以到官网查看.大致服务架构图: 一.三台机器的IP分别为:br/>源服务器:172.20.2.108目标(备份)服务器:172.20.2.225@todo:从源服务器(172.20.2.108)的/data/目录下的所有的文件实时通过到目标服务器(172.20

python+rsync精确同步指定格式文件

# coding: utf-8 #!/usr/bin/env python ''' updatedb更新本地服务器指定目录/home/upload/de locate.dbz数据库 然后locate命令正则查找符合条件的文件并将文件名输出到locate.src 通过paramiko模块得到远程服务器符合条件的文件并将文件名输出到locate.dst 比较这两个文件得到locate.diff,最好rsync命令同步locate.diff列表中的文件 到远程服务器 ''' import parami

49.Android中线程同步异步方式小结

同步和异步的区别 首先以一个常见的开发场景来区别一下同步和异步的区别,比如我们要获取一张网络图片并完成显示.在这个场景中我们需要开启两个线程,一个是子线程—即下载图片的线程:另外是主 UI 线程—即图片下载完成后进行显示的线程.针对这个场景分别用两幅实现的流程图来区分同步和异步. 从图中可以看到,二者的区别在于:同步时当前主线程会阻塞,直到子线程通知主线程为止(先不考虑ANR):而异步的时候主线程可以继续干其它的事情,当子线程完成任务的时候通知一下主线程就可以了,类似于接口回调或消息队列的思想.

rsync + notify 同步

1. 配置rysnc server:同步机,同步被同步机更新的文件,很多台vi /etc/rsyncd.conf uid=rootgid=rootuse chroot=nomax connections=10timeout=600strict modes=yesport=873pid file=/var/run/rsyncd.pidlock file=/var/run/rsyncd.locklog file=/var/log/rsyncd.log[module_pk10]path=/data/w

(转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步

Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80%9A%E8%BF%87rsync%E4%B8%8Einotify%E5%BC%82%E6%AD%A5%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%BA%8B%E4%BB%B6%E7%9B%91%E6%8E%A7%E6%9C%BA%E5%88%B6%E5%AE%9E

rsync 精确同步文件用法 (转载)

-- include-from 指定目录下的部分目录的方法: include.txt: aa bb ss Command: rsync -aSz  --include-from=/home/include.txt --exclude=/* /home/mnt/data/upload/f/ [email protected]:/mnt/data/upload/f/ --exclude-from 排除目录下的部分目录的方法: exclude.txt: cc dd Command: rsync  -a

XMLHttpRequest 异步方式和同步方式

一.同步和异步区别 简单说:同步是阻塞模式,异步是非阻塞模式. 举个例子:普通B/S模式(同步)AJAX技术(异步) 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕 二.XMLHttpRequest 异步方式和同步方式 xmlHttp.open("GET", url, false);//同步方式请求 xmlHttp.open("GET