zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Rsync 文件同步(四):实时同步 Rsync + Lsyncd

2023-09-14 09:15:28 时间

Lsyncd 工具

Lsyncd 使用文件系统事件接口(inotify 或 fsevents)来监视对本地文件和目录的更改

  • 默认同步方法是 rsync

  • 整理文件系统时事件性能好,会以1个或者多个进程同步到目标服务器的文件系统中

  • 是一种轻量级的实时镜像解决方案

  • 官网地址:https://lsyncd.github.io/lsyncd/

  • 开源许可证:GPLv2 或任何更新的 GPL 版本

  • Lsyncd 旨在将缓慢变化的本地目录树同步到远程镜像。Lsyncd 对于将数据从安全区域同步到不太安全的区域特别有用

  • Lysncd 不会妨碍本地文件系统性能,可以通过配置文件实现细粒度的自定义

  • Lysncd 实际上是 Lua 语言封装了 inotify 和 rsync 工具

环境说明

Lsyncd 服务端

  • 需要安装 Lsyncd 和 rsync
  • centos 7.9 (注意内核版本要大于2.6.13)
  • 需要同步的目录:/home/share
  • 静态IP地址:192.168.204.52

客户端

  • 安装 rsync
  • centos 7.9 (注意内核版本要大于2.6.13)
  • 备份文件的存放目录:/home/backups
  • 静态IP地址:192.168.204.57

安装 rsync

###########两台都要安装###########
yum install -y rsync

image-20230215134345323

image-20230215134354407

配置 rsync daemon 服务

客户端需要配置 daemon 服务(文件同步过来存放的服务器)

  • 配置文件如下
####/etc/rsyncd.conf文件内容####
transfer logging = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
port = 873
address = 0.0.0.0
uid = 0
gid = 0
use chroot = yes
max connections = 100
timeout = 900
read only = no
ignore errors
auth users = rsync_backup
secrets file = /etc/rsyncd.pass

[backups]
comment = This is a backup test
path = /home/backups
  • 创建备份文件存放目录:mkdir /home/backups

  • 配置账号密码文件(注意文件权限)

echo "rsync_backup:Test123456" >/etc/rsyncd.pass
chmod 600 /etc/rsyncd.pass

image-20230215134718357

  • 启动服务进程:systemctl enable rsyncd --now

image-20230215134801429

安装 Lsyncd

服务端操作:安装 Lsyncd 软件

#我是从这个地址直接搜索到 rpm 包进行下载的:https://pkgs.org/download/lsyncd
#下载好了,将包放在服务器上直接安装即可
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/lsyncd-2.2.2-1.el7.x86_64.rpm

#安装
rpm -ivh lsyncd-2.2.2-1.el7.x86_64.rpm

image-20230215135710078

配置 Lsyncd

  • 配置文件默认在 /etc/lsyncd.conf
###############配置文件主要内容参考###############
###############全局配置 settings{}块###############
#定义日志文件
logfile
#定义状态文件
statusFile
#定义进程pid文件
pidfile
#指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify
inotifyMode
#指定同步进程最大数
maxProcesses
#守护模式的启用
nodaemon
#设置累计到多少次监听的事件进行一次同步
maxDelays
#默认值
inist
###############sync配置 sync{}块###############
#模式选择,支持rsync、rsyncssh、direct三种模式
default.rsync
#待同步的源目录
source
#同步过去的目的地址
target
#只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步,默认 true
init
#累计事件数量,等待rsync同步延时时间,默认15秒
delay
#排除列表
excludeFrom
#设置是否同步删除
delete
###############rsync配置 rsync = {}块###############
#带宽限速,单位kb/s
bwlimit
#可执行程序地址,默认/usr/bin/rsync
binary
#以递归方式传输文件,并保持所有文件属性
archive
#压缩传输模式开关
compress
#同步详细输出
verbose
  • 演示的配置文件示例:
settings {
  logfile = "/var/log/lsyncd.log",
  statusFile = "/var/log/lsyncd.status",
  insist = true,
  statusInterval = 10
}

sync {
  default.rsync,
  source = "/home/share",
  target = "rsync_backup@192.168.204.57::backups",
  delete = true,
  delay = 1,
  maxDelays = 1,
rsync = {
    binary = "/usr/bin/rsync",
    archive = true,
    compress = true,
    verbose = false,
    password_file = "/home/rsync.passwd",
  }
}
  • 服务端准备密码文件
echo "Test123456" >/home/rsync.passwd
chmod 600 /home/rsync.passwd

image-20230215141425865

启动服务验证同步

  • 在服务端启动 Lsyncd 程序
systemctl enable lsyncd --now

image-20230215141518731

  • 上传一些文件,看一下同步效果:同步正常

image-20230215141604053

image-20230215141620242

本文参考了博客地址:带你去流浪的博客 (cnblogs.com),博文中有有更详细的应用场景和示例