rsync远程同步与rsync+inotify实时同步实操
前言
不同服务器需要用到同一个文件,如何处理?
当文件信息在不断更新,且文件不断增大,又如何处理?
如今的微信公众号,小程序等都有开通图片上传的功能,当微信公众号和程序后台部署在不同服务器时,我们需要将微信服务器的图片同步到程序后台服务器上,此时就可以使用Rsync工具。
Rsync(remote synchronize)是一个远程数据同步工具,可快速同步多台主机间的文件。一般应用于不同服务器之间文件的同步。
Rsync使用所谓的“Rsync算法”来使本地和远
程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,相对其他文件同步方法来说比较快。
一:rsync概述
1.1:是一款快速增量备份的工具
Remote Sync,远程同步
支持本地复制,或者与其他SSH,rsync主机同步
官方网站:http://rsync.samba.org
1.2:配置rsync 同步源服务器
1.21:rsync同步源
- 指备份操作的远程服务器,也被称为备份源
1.3:配置rsync源基本思路
备注:在提供服务的同步源服务器上操作
- 建立rsyncd.conf配置文件
- 建立独立的账号文件
- 启用rsync——daemon模式
1.31: 应用示例
- 用户gsybk,允许下行同步
- 操作的目录为/var/www/html
二:配置rsync配置文件
在CentOS 7系统之前/etc/rsyncd.conf文件默认不存在,CentOS 7开始已经有这样的文件,并且其中放置了模板参考信息(根据实际情况编写需要的内容,注意格式)。
- 服务端IP:20.0.0.41
- 客户端ip:20.0.0.42
[root@localhost ~]# vim /etc/rsyncd.conf
uid = nobody '//启用匿名用户'
gid = nobody
port 873 '//监听端口'
use chroot = yes '//禁固在目录'
log file = /var/log/rsyncd.log '//日志文件存放位置'
pid file = /var/run/rsyncd.pid '//存放进程ID的文件位置'
hosts allow = 20.0.0.0/24 '//允许访问的客户机地址'
'//共享模块'
[wwwroot] '//共享模块名称'
path = /var/www/html '//源目录的实际路径'
comment = www.shuai.com '//描述(可以省略)'
read only = yes '//开启只读'
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper '//同步时不在进行也锁的文件类型'
secrets file = /etc/rsyncd_users.db '//存放账户信息的数据文件'
基于安全性考虑,对于rsync的同步源最好仅允许以只读方式做同步。另外,同步可以采用匿名的方式,只要将其中的“auth users”和“secrets file”配置项去除即可!
2.1:为备份账号创建数据文件
- 根据rsync的配置文件内容,创建账号数据文件。每行一个用户,用户和密码之间用冒号进行分割
[root@localhost ~]# vim /etc/rsyncd_users.db
//编写 采用用户名:密码格式
backuper:123123
- 由于账号信息采用明文存放,因此需要调整那文件权限,避免账号信息泄露
[root@localhost ~]# chmod 600 /etc/rsyncd_users.db
- 启动rsync服务
[root@localhost ~]# rsync --daemon
//查看状态
[root@localhost ~]# netstat -ntap | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 87776/rsync
tcp6 0 0 :::873 :::