服务器同步解决方案Rsync+Inotify

 手动解决服务器同步问题解决方案

什么是rsync 

  RSYNC 是Remote Sync 远程同步,开源的实现数据全量与增量同步备份的工具

具有什么特性

1)支持拷贝特殊文件如链接,设备,属组,权限等
2)可以有排除指定文件或目录同步的功能,相当于打包命令tar
3)可以保持原来文件或目录的权限,时间,软硬链接等所有属性均不改变。
4)可实现增量同步,即只同步发生变化的数据,因此数据传输效率更高
5)可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对传输数据加密),也可以通过直接的socket链接(有服务端和客户端)
6)支持匿名(不需要超级用户权限)的或认证的进程模式传输,方便进行数据备份及镜像。

采用C/S模式(客户端/服务器模式)[ 就是一个点到点的传输,直接使用rsync命令 ] ,其工作方式是源主机和从机ssh建立连接,中间用shell语法输入指令,类似于scp

rsync还可以实现文件和目录的删除功能,这又是相当于RM命令,rsync相当于scp,cp,rm命令。并且还由于他们。

在同步备份时,默认情况下,rsync通过其独特的“quick check”算法,仅同步大小或者最后修改时间发生变化的文件或目录(也可根据权限,属主等变化同步,需要制定参数)。甚至是只同步一个文件里变化的内容部分,所以可以实现快速的同步数据的功能。

两台服务器 192.168.2.3(源服务器),192.168.2.5(目标服务器)

服务器环境centos8

生产环境中使用的场景:

1:一般用于数据异地备份

2:用于WEB集群节点数据的批量更新

3:用于本地YUM服务器与互联网镜像站软件同步

源服务器:

https://github.com/inotify-tools/inotify-tools/tags

下载inotify-tools最新tar.gz包并解压

tar -xvf inotify-tools-xxx.tar.gz

cd notify-tools-xxx

./configure --prefix=/usr/local/inotify-tool-x

make && make install

vi /home/test/rsync.passwd

123456
chmod 600 /home/test/rsync.passwd

chmod 600 home/test/rsync.conf

所有目标服务器安装:(需要安装rsync服务,源服务器开启服务)

yum install rsync xinetd  # CentOS中是以xinetd来管理Rsync服务的,可以选择不安装

vi /home/test/rsync.conf

uid=root #设置rsync运行权限为root
gid=root #设置rsync运行权限为root
use chroot=no #默认为true,修改为no,增加对目录文件软连接的备份
port=873 #默认端口,不填就是默认端口
max connections=10 #最大连接数
strict modes=yes
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/home/test/rsyncd.log
[web] #自定义名称
path=/home/wwwroot/test #rsync服务端数据目录路径
comment=web#模块名称,与上面[web]名字相同
ignore errors
read only=no #设置rsync服务端文件为读写权限
write only=no
hosts allow=192.168.2.5 #允许ip,多个以英文逗号分割
host deny =* #禁用ip,多个以英文逗号分割
list=false
auth users=root #执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开
secrets file=/home/test/rsync.passwd #用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件

vi /home/test/rsync.passwd

root:123456
chmod 600 /home/test/rsync.passwd

chmod 600 /home/test/rsync.conf
rsync --daemon --config=/home/test/rsync.conf #启动,要注意的是源服务器不需要启动rsync服务

ps -ef |grep rsync #查看是否有rsync服务进程

切换到源服务器192.168.2.3

在/home/wwwroot/test目录下新建一个文件,再用下面到命令执行,查看目标服务器是否有文件新增

rsync -vzrtopg --delete  --password-file=/home/test/rsync.passwd /home/wwwroot/test root@192.168.2.5::web

自动实现服务器数据同步 Rsync+Inotify-tools

参考地址:

  https://blog.csdn.net/u012700515/article/details/104499026

  https://m.linuxidc.com/Linux/2017-12/149355.htm

  https://www.osyunwei.com/archives/7435.html


原文地址:https://www.cnblogs.com/RainBol/p/14604339.html