官网开源地址
https://github.com/axkibe/lsyncd
官网配置手册
https://axkibe.github.io/lsyncd/
简介
Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具
简单的命令
lsyncd -rsyncssh /backup/server1/ 10.0.11.191 /backup/server2/
配置
主机 | 操作系统 | IP地址 |
---|---|---|
主 lsyncd server | centos6 | 192.168.10.10 |
备 rsync Client | centos6 | 192.168.10.20 |
一 、lsyncd server 搭建安装
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # 安装 epel 源
yum -y install lsyncd rsync # 安装
vim /etc/lsyncd.conf # 配置
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 1000,
maxDelays = 200,
}
sync {
default.rsync,
source = "/tmp/",
target = "rsyncuser@192.168.10.20::backup",
delay = 100,
rsync = {
binary = "/usr/bin/rsync",
password_file = "/etc/images.pas",
archive = true,
compress = false,
verbose = true
}
}
vim /etc/images.pas # 创建密码文件
123456
chmod 600 /etc/images.pas # 修改密码文件权限
service lsyncd start # 启动
lsyncd 配置说明
1、settings 部分 关于lsyncd工具自身的一些选项设置
--: 注释, 因为是lua 语言,所以 --是注释
logfile : 指定lsyncd工具本身运行所产生的日志文件存放位置
statusFile : 定义lsyncd监控目录状态文件的存放位置
statusInterval : 隔多少秒记录一次被监控目录的状态
nodaemon=true : 默认是不启用守护模式的
inotifyMode : 指定要监控的事件,如,CloseWrite,Modify,CloseWrite or Modify, 默认是CloseWrite
maxProcesses : 指定同步时进程的最大个数
maxDelays : 当事件被命中累计多少次后才进行一次同步
2、sync 部分 主要用来定义同步时的一些设置,可以同时同步多个目录,只需要在该代码块中事先定义好多个sync即可
default.rsync : 指定lsyncd运行模式,另外,还有>default.direct,default.rsyncssh模式
source : 指定要监控的目录,务必全部用绝对路径
target : 要同步到的目标目录,一般为rsync服务端模块下指定的目录,说明: 'rsyncuser@192.168.10.20::bak' , 'rsyncuser':同步的用户在备服务器上设置 ,'192.168.10.20':备服务器地址, '::backup':模块名称,同步路径在备服务器上设置
init : 为false时表示只同步lsyncd进程启动以后发生改动事件的文件,否则,反之,默认为true
delay : 当命中的事件累计到多少时再触发同步
exclude : 通过此选项排除掉不需要同步的文件,可用它自己的正则进行匹配
delete 为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除。它除了false,还有startup、running值,请参考 Lsyncd 2.1.x ‖ Layer 4 Config ‖ Default Behavior。
delete = true 默认。 Lsyncd将在目标上删除不在源代码中的任何东西。在启动时以及在正常操作过程中被删除的内容
delete = false Lsyncd不会删除目标上的任何文件。不在启动或正常运行。 (虽然可以覆盖)
delete = 'startup' Lsyncd将在启动时删除目标上的文件,但不会进行正常操作。
delete = 'running' Lsyncd在启动时不会删除目标上的文件,但会删除那些在正常操作期间被删除的文件
二、rsync Client 搭建安装
yum -y install rsync # 安装
vim /etc/rsyncd.conf # 配置
uid = root
gid = root
use chroot = yes
max connections=0
log file=/var/log/rsyncd/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
[backup]
path = /var/tmp/
read only = no
list = yes
auth users = rsyncuser
secrets file = /etc/images.pas
vim /etc/images.pas # 创建密码文件
rsyncuser:123456
chmod 600 /etc/images.pas # 修改密码文件权限
/usr/bin/rsync --port=873 --address=192.168.10.20 --daemon # 启动
rsync配置说明
uid #进程对应的用户
gid #进程对应的用户组
use chroot #安全相关
max connections #最大连接数 0代表不限制
timeout = 300 #超时时间, 可选
pid file #进程对应的进程号文件
lock file #锁文件
log file #日志文件
[backup] #模块名称
path #服务器提供访问的目录
ignore errors #忽略错误, 可选
read only = false #可选
list = false #不能列表
hosts allow = 192.168.10.0/24 #允许的ip地址,可选
auth users #虚拟用户
secrets file #虚拟密码
lsyncd 启动错误 lsyncd error terminating since out of inotify watches
修复使用 echo 5000000 > /proc/sys/fs/inotify/max_user_watches
再尝试启动