一、rsync和lsyncd简介

1、rsync简介

  rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。它的特点如下:

  • 可以镜像保存整个目录树和文件系统。
  • 可以很容易做到保持原来文件的权限、时间、软硬链接等等。
  • 无须特殊权限即可安装。
  • 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
  • 安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
  • 支持匿名传输,以方便进行网站镜像。

2、lsyncd简介

  Lsyncd监视本地目录树事件监视器界面(inotify或fsevents)。它会汇总并合并事件几秒钟,然后生成一个(或多个)进程来同步更改。默认情况下,这是rsync。因此,Lsyncd是一种轻量级的实时镜像解决方案,相对易于安装,不需要新的文件系统或块设备,并且不会影响本地文件系统的性能。
  Rsync + ssh是高级操作配置,使用SSH来操作文件和目录直接在目标上移动,而不是通过有线方式重新传输移动目标。精细控制可以通过配置文件来实现。自定义操作配置甚至可以从头开始写在层叠的层次上,从外壳脚本到用Lua语言编写的代码。这样可以实现简单,强大和灵活的配置。
  Lsyncd 2.2.1在所有源计算机和目标计算机上都要求rsync> = 3.1。许可证:GPLv2或任何更高版本的GPL。

二、需求说明

  需求如下图,serv1作为数据源,serv2作为备份服务器,通过Lsyncd同步程序将源服务器/data/files目录数据准实时同步到serv2服务器的/s1/bak目录。
在这里插入图片描述

三、实现步骤

1、s2安装rsync服务

rsync服务centos7.6操作系统默认已安装,版本3.1.2,满足需求。

[root@test2 opt]# rpm -qa |grep rsync
rsync-3.1.2-4.el7.x86_64

2、编辑/etc/rsyncd.conf配置文件

将如下内容添加到rsyncd.conf配置文件后保存

uid=root
gid=root
max connections=10
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
hosts allow = 192.168.0.124

[syncdata]
comment=backup data
path=/s1/bak
read only=no
ignore errors
auth users=root
secrets file=/etc/rsyncd.passwd

设置验证密码

[root@test2 bak]# cat /etc/rsyncd.passwd
root:123456
[root@test2 bak]# chmod 600 /etc/rsyncd.passwd

3、启动rsync

可以使用systemctl start rsyncd启动或者如下命令启动

[root@test2 opt]# rsync --daemon --config=/etc/rsyncd.conf
[root@test2 opt]# ps -ef |grep rsync
root 12368 1 0 16:38 ? 00:00:00 rsync --daemon --config=/etc/rsyncd.conf
root 12370 8418 0 16:38 pts/0 00:00:00 grep --color=auto rsync

4、安装yum扩展源

[root@test1 lsyncd-master]# yum -y install epel-release

5、s1安装lsyncd

[root@test1 lsyncd-master]# yum install -y lsyncd
[root@test1 files]# lsyncd -version
Version: 2.2.2

6、配置同步策略/etc/lsyncd.conf

将如下配置添加到/etc/lsyncd.conf后保存。

[root@test1 ~]# cat /etc/lsyncd.conf
settings {
logfile = “/tmp/lsyncd.log”,
statusFile = “/tmp/lsyncd.status”,
insist = true,
statusInterval = 10
}

sync {
default.rsync,
source = “/data/files”,
target = “root@192.168.0.125::syncdata”,
delete = true,
delay = 1,
maxDelays = 1,
–init = true,
rsync = {
binary = “/usr/bin/rsync”,
archive = true,
compress = true,
verbose = false,
password_file = “/etc/rsyncd.d/rsync.pwd”,
_extra = {"–bwlimit=2000"}
}
}

配置验证密码/etc/rsyncd.d/rsync.pwd

[root@test1 files]# mkdir -p /etc/rsyncd.d/
[root@test1 ~]# echo “123456” > rsyncd.pwd
[root@test1 files]# chmod 600 /etc/rsyncd.d/rsync.pwd

7、启动lsyncd服务

[root@test1 ~]# systemctl start lsyncd

8、验证文件同步情况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、FAQ

1、lsyncd启动失败
在这里插入图片描述
原因:主要是因为lsyncd2.2版本bug引起,如需使用init=true功能,配置文件中请不要直接写init=true来开启功能,
解决方案:如需init=true请将init=true注释或删除(因为默认init=true)来解决该报错。

五、lsyncd配置参数说明

1、配置段

settings # 是全局配置
sync # 定义同步参数
rsync # 定义同步文件参数
ssh # 定义服务器远程端口

2、settings配置

  • logfile = FILENAME 定义日志文件
  • pidfile = FILENAME PID文件
  • nodaemon = BOOL 表示不启用守护模式,默认
  • statusFile = FILENAME 定义状态文件
  • statusInterval = NUMBER 将lsyncd的状态写入上面的statusFile的间隔,默认10秒
  • logfacility = STRING syslog facility, default “user”
  • logident = STRING syslog identification (tag), default “lsyncd”
  • insist = BOOL keep running at startup although one or more - targets failed due to not being reachable.
  • inotifyMode = STRING 指定inotify监控的事件,默认是- CloseWrite,还可以是Modify或CloseWrite or Modify
  • maxProcesses = NUMBER 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程

3、sync的三种模式

  • default.rsync 本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;
  • default.direct 本地目录间同步,使用cp、rm等命令完成差异文件备份;
  • default.rsyncssh 同步到远程主机目录,rsync的ssh模式,需要使用key来认证

4、rsync参数

  • init 这是一个优化选项,当init = false,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是true
  • delay 累计事件,等待rsync同步延时时间,默认15秒(最大累计到1000个不可合并的事件)。也就是15s内监控目录下发生的改动,会累积到一次rsync同步,避免过于频繁的同步。(可合并的意思是,15s内两次修改了同一文件,最后只同步最新的文件)
  • excludeFrom 排除选项,后面指定排除的列表文件,如excludeFrom = “/etc/lsyncd.exclude”,如果是简单的排除,可以使用exclude = LIST。
    这里的排除规则写法与原生rsync有点不同,更为简单:
    监控路径里的任何部分匹配到一个文本,都会被排除,例如/bin/foo/bar可以匹配规则foo
    如果规则以斜线/开头,则从头开始要匹配全部
    如果规则以/结尾,则要匹配监控路径的末尾
    ?匹配任何字符,但不包括/
    *匹配0或多个字符,但不包括/
    **匹配0或多个字符,可以是/
  • delete 为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除。它除了false,还有startup、running值,请参考 Lsyncd 2.1.x ‖ Layer 4 Config ‖ Default Behavior。
  • bwlimit 限速,单位kb/s,与rsync相同(这么重要的选项在文档里竟然没有标出)
  • compress 压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
  • perms 默认保留文件权限。
  • 其它rsync的选项
  • 其它还有rsyncssh模式独有的配置项,如host、targetdir、rsync_path、password_file,
Logo

更多推荐