CentOS7部署lsyncd+rsync实现服务器文件实时同步

原文:https://www.jisai.net.cn/articles/centos7-install-lsyncd-rsync-synchronization.html

 

lsyncd配置简单灵活,在同步海量小文件时,性能表现优异, 下面为大家介绍如何部署lsyncd+rsync实现服务器文件实时同步

实验环境:

CentOS 7.6 最小化安装

需求及网络拓扑图如下

CentOS7部署lsyncd+rsync实现服务器文件实时同步

A(192.168.123.100):Rsync客户端+lsyncd

B(192.168.123.200):Rsync服务端(daemon模式)

需求:

当A服务器中的文件发生变化(新增、修改、删除),实时推动到B服务器

实现思路:

A中部署Rsync客户端+lsyncd,lsyncd通过内核的inotify触发机制监控文件的动向,并将改动发送给Rsync,由Rsync同步到服务器B;服务器B以守护进程的方式部署Rsync服务端,接收A发来的文件同步请求,并将文件同步!

一、安装Rsync

在A服务和B服务器执行以下命令安装Rsync

yum install -y rsync

二、安装lsyncd

CentOS 7自带的yum无法安装lsyncd。可以通过安装EPEL存储库的方式再用yum安装lsyncd,命令如下:

yum install -y epel-release

接着执行以下命令即可直接安装lsyncd

yum -y install lsyncd

注:

lsyncd 只需要在A服务器上安装,B服务器无需安装

三、配置Rsync

A服务器为Rsync客户端,安装完成即可,B服务器以daemon方式运行,所以只需要对B服务器的Rsync进行配置

1、修改配置文件:

vim /etc/rsyncd.conf

将配置文件修改如下:

# /etc/rsyncd: configuration file for rsync daemon mode
 
# See rsyncd.conf man page for more options.
 
# configuration example:
uid = rsync #Rsync运行用户
gid = rsync #Rsync运行用户组
use chroot = no
max connections = 4 #最大连接数
pid file = /var/run/rsyncd.pid #pid文件路径
lock file = /var/run/rsyncd.lock #lock文件路径
log file = /var/log/rsyncd.log #日志文件路径
# exclude = lost+found/
# transfer logging = yes
timeout = 300 #超时时间
# ignore nonreadable = yes
# dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
 
# [ftp]
# path = /home/ftp
# comment = ftp export area
 
[data] #模块名称,后边要用到!
path = /data/ #同步路径
ignore errors
read only = false #可读可写
list = false
hosts allow = 192.168.123.100 #允许访问IP 可写成IP段
hosts deny = 0.0.0.0/32 #拒绝访问的IP
auth users = rsync #认证连接的用户名
secrets file = /etc/rsyncd.pwd #密码文件
#end file

:wq 保存退出

修改前:

CentOS7部署lsyncd+rsync实现服务器文件实时同步

修改后:

CentOS7部署lsyncd+rsync实现服务器文件实时同步

2、创建用户组和用户

groupadd rsync
useradd -s /sbin/nologin -M -g rsync rsync

3、创建同步目录并授予权限

mkdir /data
chown -R rsync:rsync /data

4、创建认证用户和密码文件并修改权限

Rsync进行同步需要一个同步的虚拟用户,这个用户的用户名已经在配置文件里指定,下面创建这个用户名的用户密码文件

由于是用户名和密码文件所以必须要将其修改为600权限,不然后期会报错无法认证

echo "rsync:rsync" >/etc/rsyncd.pwd
chmod 600 /etc/rsyncd.pwd

5、启动Rsync

rsync --daemon --config=/etc/rsyncd.conf

6、验证Rsync是否启动

我们可以通过查看Rsync监听端口(Rsync默认监听873端口),或者查看日志文件以确定Rsync是否以daemon模式成功启动

netstat -anlpt | grep rsync

或者

cat /var/log/rsyncd.log

CentOS7部署lsyncd+rsync实现服务器文件实时同步

如图,即Rsync已成功启动

至此,服务器B端的操作,已经结束

7、测试Rsync

服务器A需要创建相应的密码认证文件用于用户自动认证

由于也是密码文件,所以也需要将文件权限修改为600

echo "rsync" > /etc/rsyncd.pwd #由于我们要在同步命令里指定用户名,所以这里就不再指定用户名
chmod 600 /etc/rsyncd.pwd

由于服务端路径存在权限问题,所以同步源(Rsync客户端)也需要进行相同权限设置

下面进行创建用户(组)、目录、创建测试文件并赋予其权限

groupadd rsync
useradd -s /sbin/nologin -M -g rsync rsync
mkdir /data
cd /data/
touch {01..10}
chown -R rsync:rsync /data

目录文件权限如下

CentOS7部署lsyncd+rsync实现服务器文件实时同步

关闭两台服务器的防火墙

systemctl stop firewalld

下面进行测试

将A服务器/data/ 目录下的文件同步到B服务器

rsync -avz /data/ rsync@192.168.123.200::data --password-file=/etc/rsyncd.pwd

注:

  1. 两个冒号
  2. /data   服务器A的数据源路径
  3. data是模块名称,配置文件里已写明
  4. rsync@192.168.123.200 认证用户名@被同步的服务器IP,这里是B服务器的IP

如图,即表示成功

CentOS7部署lsyncd+rsync实现服务器文件实时同步

8、检测传输

查看B服务器的/data目录

如图,文件已同步

CentOS7部署lsyncd+rsync实现服务器文件实时同步

四、配置lsyncd

1、修改配置文件

vim /etc/lsyncd.conf

删除原有内容并键入以下内容

settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 8,
maxDelays = 1,
nodaemon = false,
}
sync {
default.rsync,
source = "/data/", --监控目录
target = "rsync@192.168.123.200::data", --rsync的认证用户名、IP、模块
-- delete = true,
exclude = {
'.**',
'.git/**',
'*.bak',
'*.tmp',
'runtime/**',
'cache/**'
},
delay = 15,
-- init = false,
rsync = {
binary = "/usr/bin/rsync", --rsync可执行文件路径,必须为绝对路径
password_file = "/etc/rsyncd.pwd", --密码认证文件
archive = true,
compress = false,
verbose = false,
_extra = {"--bwlimit=200", "--omit-link-times"}
}
}

修改前:

CentOS7部署lsyncd+rsync实现服务器文件实时同步

修改后:

CentOS7部署lsyncd+rsync实现服务器文件实时同步

注:lsyncd的配置文件是lua语法,注释方式为:“--”

2、启动lsyncd

lsyncd -log Exec /etc/lsyncd.conf

或者

systemctl start lsyncd

如图,即表示启动成功

CentOS7部署lsyncd+rsync实现服务器文件实时同步

或者

CentOS7部署lsyncd+rsync实现服务器文件实时同步

3、测试

修改/data 目录下的任意文件,保存,查看B服务器是否同步

服务器A

CentOS7部署lsyncd+rsync实现服务器文件实时同步

服务器B

CentOS7部署lsyncd+rsync实现服务器文件实时同步

如图,内容成功同步,实验成功,撒花!!!!

注:

  1. 文件权限一定一致
  2. Rsync运行需要系统用户,认证需要Rsync虚拟用户,注意两个用户的区别
  3. 如果有报错,注意查看日志文件检测运行状态

原创文章。发布者:汲赛,转载请注明出处:https://www.jisai.net.cn/articles/centos7-install-lsyncd-rsync-synchronization.html

posted @ 2021-09-15 18:19  wangmo  阅读(520)  评论(0编辑  收藏  举报