0x01 前言

假设我有一台服务器A(服务端),一台服务器B(客户端),我要把A服务器的某个目录内的数据增量同步到服务器B。就可以使用Rsync来进行同步。

教程在两台服务器上都安装Rsync,A服务器发送,B服务器接收。Rsync检测到文件新增或者文件修改都自动执行同步,每次只同步更改的文件,网络资源占用小。

配合之前mysql双机热备,即可实现多VPS实时整站负载均衡;【宅技术】Mysql5.7 双机热备配置负载均衡-主/主复制 – 宅客基地 (zkjd.me)

0x02 配置A主服务器

1、首先需要安装Rsync,其中Ubuntu是直接安装好的,其余Linux系统自行百度安装;A/B两台机都需要安装;

Centos:yum -y install rsync

Ubuntu:sudo apt install rsync

2、放行873端口;

使用Rsync进行数据增量同步-linux环境

3、进行Rsync配置文件编辑;

[zhaiker] #配置名字
path=/www/wwwroot/www.zkjd.me/  #需要主服务器同步文件目录
use chroot=no
max connections=10
read only=yes
write only=no
list=no
uid=root
gid=root
auth users=zhaiker   #用户名
secrets file=/etc/rsync_server.pas   #密码文件
strict modes=yes
hosts allow=*    #指定IP,或者*所有人可以连接;
#hosts deny=1.1.1.1
ignore errors=yes
timeout=120

直接复制上面代码到根目录里面/etc/rsyncd.conf,如果没有这个文件请手动创建;

使用Rsync进行数据增量同步-linux环境

4、创建密码配置文件;

还是在根目录/etc/rsync_server.pas里面填写自己的账户密码如下图;

使用Rsync进行数据增量同步-linux环境

5、修改rsync_server.pas文件权限,此项非常重要!

使用Rsync进行数据增量同步-linux环境

rsync_server.pas文件权限设置为600,所有者为ROOT;

6、启动A服务器的Rsync服务;

Centos:/usr/bin/rsync --daemon --config=/etc/rsyncd.conf

Ubuntu:sudo systemctl start rsync

A服务器上我们就配置完成了。

0x03 配置B从服务器

1、与A一样首先安装rsync,然后放行端口873;重复操作就不演示了;

2、在根目录 /etc 目录创建密码文件 rsync_client.pas 内容里只填密码!如下图:

使用Rsync进行数据增量同步-linux环境

3、继续设置权限为600,所有人为ROOT;

使用Rsync进行数据增量同步-linux环境

4、在B从服务器宝塔面板上添加计划任务。

使用Rsync进行数据增量同步-linux环境

代码如下:

rsync -avztopg --delete rsync://zhaiker@这里填A服务器IP/zhaiker /www/wwwroot/www.zkjd.me --password-file=/etc/rsync_client.pas

执行周期自己选择多久一次,根据实际需求自己选择。

首次添加定时任务后,因为文件较多。可以手动点一下执行同步。不影响以后的定时同步。

同步结果都可以查看任务日志。

使用Rsync进行数据增量同步-linux环境