服务器同步解决方案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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步