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
配置 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
- 启动服务进程:
systemctl enable rsyncd --now
安装 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
配置 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
启动服务验证同步
- 在服务端启动 Lsyncd 程序
systemctl enable lsyncd --now
- 上传一些文件,看一下同步效果:同步正常
本文参考了博客地址:带你去流浪的博客 (cnblogs.com),博文中有有更详细的应用场景和示例
相关文章
- GoodSync 9.5.3.3文件同步软件注册机
- 在Ubuntu上使用FreeFileSync同步文件
- 解决:如何写一个shell脚本(脚本名称:xsync,也称:xsync命令):实现多个电脑或者虚拟机之间的文件同步?
- Maven:第二章:最全的Maven Pom文件标签详解
- Gitlab CI/CD 实践八:同步文件到其他 Git 仓库
- rsync自动同步_文件实时同步
- rsync远程同步文件_通过ssh传输文件
- 在Linux中将目录压缩打包为zip文件 并通过ftp上传的Shell脚本
- 编译适用于 PHP 8.2 的 redis.dll 扩展文件
- java IO流文件的读写具体实例详解编程语言
- Linux实时文件同步化解决方案(linux实时同步)
- Linux下网络文件管理利器(linux网络文件系统)
- Linux实现文件实时同步(linux文件实时同步)
- 如何即时设置一个静态文件服务器
- Linux实时文件同步技巧(linux实时同步文件)
- 的文件探索Linux头文件目录下的秘密(linux头文件目录下)
- Linux打开二进制文件的技巧(linux打开二进制文件)
- MongoDB:文件存储的实现与利用(mongodb文件存储)
- Linux Meld让文件比对变得更轻松(linux meld)
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- inotify-tools+rsync实时同步文件的配置方法