群晖rsync与Linux服务器同步,使用lsync+rsync实现linux服务器间的实时同步-Go语言中文社区...

使用lsyncd+rsync实现linux服务器间的实时同步

环境:

源服务器:192.168.241.11,centos7-1804

目标服务器:192.168.241.12,centos7-1611

一、安装rsync和lsyncd

本文使用yum安装,需要能连上互联网

1、安装epel

yum install epel

说明:因为默认的centos和redhat源中没有lsync的rpm资源,因此需要安装epel源,之后才能通过yum找到lsync的安装资源。

2、安装rsync和lsyncd

yum install lsyncd

说明:lsyncd依赖rsync,因此,使用yum安装lsyncd会自动安装rsync。具体的同步任务由rsync完成,lsyncd的任务只是定时触发rsync同步,所以,源服务器与目标服务器均需要安装rsync,但只有一台服务器需要安装lsyncd,根据同步方向决定。如果是从源服务器发送文件到目标服务器,则lsyncd需要安装在源服务器,目标服务器作为rsync服务端,需要配置rsync服务。反之,需要在目标服务器安装lsyncd,在源服务器配置rsync。本文将目标服务器作为rsync服务端。

二、配置rsync服务器(192.168.241.12)

1、编辑/etc/rsyncd.conf文件,内容如下:

use chroot = no

[test]

path = /tmp/tmp12

read only = false

uid = root

gid = root

auth users = rsyncuser

secrets file = /tmp/rsync.passwd

说明:“use chroot"为全局变量,如果为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接所指向的目录文件。chroot默认值为true。“path”指定该模块的供备份的目录树路径,该参数是必须指定的。“uid”和“gid”指定当该模块传输文件时守护进程应该具有的用户和组,默认值是"nobody”。“read only”设定是否允许客户上传文件到rsync服务器,默认为true。“auth users”指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份,这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。更详细的rsync配置说明,请自行百度。

2、创建并编辑上一步中“secrets file”选项指定的文件/tmp/rsync.passwd,文件内容如下:

rsyncuser:123456

说明:一个用户一行,冒号前面是用户名,冒号后面是密码。编辑完后,需要将此文件权限修改为“600”,否则会出错,权限修改命令如下:

chmod 600 /tmp/rsync.passwd

3、将rsync设置为开机启动,并启动rsync服务。

设置为开机启动:

systemctl enable rsyncd.service

启动rsync服务:

systemctl start rsyncd.service

启动后,查看rsync服务的启动状态,可使用如下命令:

systemctl status rsyncd.service

4、开放873端口。

rsync服务默认使用tcp 873端口。

firewall-cmd --zone=public --add-port=873/tcp --permanent

firewall-cmd --reload

三、配置lsyncd服务

1、编辑/etc/lsyncd.conf文件,内容如下:

sync {

default.rsync,

source = "/tmp",

target = "rsyncuser@192.168.241.12::test",

rsync = {

compress = false,

archive = true,

verbose = false,

timeout = 3600,

password_file = "/tmp/rsync.pass"

}

}

说明:“default.rsync”是同步模式,有三种模式,本文使用rsync同步。“source”是同步的源目录,使用绝对路径。“target”是同步的目标路径,根据同步模式的不同,路径的格式也不同,本例中为rsync的路径,用户名为rsync服务器配置文件中配置的用户,不是操作系统用户,路径中的“test”为rsync服务器配置文件中配置的模块名。“rsync”模块为rsync的配置,其中“password_file”为rsync的密码文件。其他更详细配置说明,请自行百度。

2、创建并编辑rsync的密码文件/tmp/rsync.pass,内容如下:

123456

说明:这个文件里只有密码,创建完成后,需要将文件权限修改为“600”,否则会报错。修改权限命令如下:

chmod 600 /tmp/rsync.pass

3、将lsyncd设置为开机启动,并启动lsyncd服务。

设置为开机启动:

systemctl enable lsyncd.service

启动lsyncd服务:

systemctl start lsyncd.service

启动后,查看lsyncd服务的启动状态,可使用如下命令:

systemctl status lsyncd.service

四、SELINUX权限问题

按照上述步骤配置完成后,可能会发现lsyncd服务无法启动,使用“systemctl status lsyncd.service”命令发现报错如下:

9d15bc99dc615b94442d2a68fc70e2c3.png

这有可能是因为rsync服务器的selinux权限导致的,此时如果使用rsync命令手动同步文件,会发现报错。lsyncd通过rsync同步文件,因为rsync命令都报错,所以lsyncd服务也无法使用。

如果确实是rsync服务器的selinux权限导致的问题,可以通过以下方法解决:

1、临时方法,重启rsync服务器后失效。在rsync服务器上执行:

setenforce 0

2、永久方法,修改selinux配置文件/etc/selinux/config,将其中的“SELINUX”的值设置为disabled,重启服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值