rsync + inotify 数据实时同步

Posted cyleon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync + inotify 数据实时同步相关的知识,希望对你有一定的参考价值。

一、rsync介绍

  rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh带的scp命令,但又优先于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优先于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。利用rsync还可以实现删除文件和目录的功能,这又相当于rm命令。
  一个rsync相当于scp(远程拷贝),cp(本地拷贝),rm(本地删除),但是还优先于这些命令。Rsync还可以是一个网络服务(端口port、socket服务)
在同步备份数据时,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限,属主等属性的变化同步,但需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。

二、rsync应用场景

2.1 两台服务器之间数据同步cron+rsync、rsync+inotify(实时备份)

2.2 把所有客户服务器数据同步到备份服务器(定时备份)

三、rsync的安装、配置、启动

3.1 rsync服务端的配置

 [[email protected]192-168-7-77 ~]# cat /etc/redhat-release        #当前主机作为rsync服务端
CentOS Linux release 7.5.1804 (Core) 
 [[email protected]192-168-7-77 ~]# yum install rsync -y
 [[email protected]192-168-7-77 ~]# rpm -qa | grep rsync
rsync-3.1.2-4.el7.x86_64

 [[email protected]192-168-7-77 ~]# vim /etc/rsyncd.conf 
uid = rsync
gid = rsync
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[data]
uid = rsync
gid = rsync
path = /data_rsync/
comment = rsync data
ignore errors
read only = no
write only = no
hosts allow = 192.168.7.0/24
hosts deny = *
list = false
auth users = rsync_file
secrets file = /etc/rsync.password
 [[email protected]192-168-7-77 ~]# useradd rsync -s /sbin/nologin -M
 [[email protected]192-168-7-77 ~]# mkdir /data_rsync
 [[email protected]192-168-7-77 ~]# chown rsync.rsync /data_rsync/
 [[email protected]192-168-7-77 ~]# echo rsync_file:lzfnlzfn >/etc/rsync.password 
 [[email protected]192-168-7-77 ~]# chmod 600 /etc/rsync.password
 [[email protected]192-168-7-77 ~]# rsync --daemon
 [[email protected]192-168-7-77 ~]# echo /usr/bin/rsync --daemon >>/etc/rc.local 
 [[email protected]192-168-7-77 ~]# chmod +x /etc/rc.d/rc.local

3.2 rsync客户端的配置

 [[email protected] ~]# echo lzfnlzfn /etc/rsync.password 
 [[email protected]-node1 ~]# chmod 600 /etc/rsync.password
 [[email protected]-node1 ~]# rsync -avz ./data/ [email protected]192.168.7.77::data --password-file=/etc/rsync.password        #由客户端向服务端推送数据的时候注意客户端文件夹的权限是否为rsync
 [[email protected]-node1 ~]# rsync -avz [email protected]192.168.7.77::data /data_rsync/ --password-file=/etc/rsync.password   #由服务端向客户端拉取数据

3.3 关于auth认证排错思路

  1. 确认密码输入是否正确
  2. server端的secrets file内容格式为 rsync_file:lzfnlzfn,冒号前面为虚拟用户名,后面为认证密码
  3. client端的secrets file内容直接为密码lzfnlzfn
  4. 配置文件/etc/rsyncd.conf中的auth users和secrets file名称是否写错
  5. secrets file文件权限必须为600
  6. secrets file文件必须拥有运行rsync --daemon用户的权限(假如root执行rsync --daemon 就必须执行chown root.root /etc/rsync.password命令修改所有者)


以上是关于rsync + inotify 数据实时同步的主要内容,如果未能解决你的问题,请参考以下文章

rsync与inotify实现数据实时同步

inotify+rsync实现实时同步

inotify和rsync实现数据实时同步

rsync+inotify实现实时同步

0基础linux运维教程 Rsync结合inotify实现数据实时同步

rsync+inotify实时同步