lsyncd+rsync实时同步


Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具!
lsyncd
lsyncd官方文档

一、 环境描述

hostname OS IP
server centos 7.2 192.168.99.181
client centos 7.2 192.168.99.237

将server端的/lvzhenjiang目录下的文件同步到client端的/mnt目录下!

二、搭建lsyncd server

$ yum install epel-release -y
$ 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    = "/root/images",
    target    = "rsyncuser@192.168.99.237::backup",
    delay     = 10,
    delete = 'running',
    exclude={
        "*.swp","*.swx","*.git"
    },
    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

2.1 配置文件说明:

2.1.1 settings部分:主要定义lsyncd工具自身的一些选项设置
  • logfile:指定lsyncd工具本身运行所产生的日志文件存放位置;
  • statusFile:定义lsyncd监控目录状态文件的存放位置;
  • statusInterval :隔多少秒记录一次被监控目录的状态;
  • nodaemon=true:默认是不启用守护模式的;
  • inotifyMode :指定要监控的事件,如,CloseWrite,Modify,CloseWrite or Modify, 默认是CloseWrite;
  • maxProcesses :指定同步时进程的最大个数;
  • maxDelays :当事件被命中累计多少次后才进行一次同步;
2.1.2 sync部分:主要用于定义同步时的一些设置,可以同时同步多个目录
  • default.rsync:指定lsyncd运行模式,另外,还有>default.direct,default.rsyncssh模式;
  • source :指定要监控的目录,务必全部用绝对路径;
  • target :要同步到的目标目录,一般为rsync服务端模块下指定的目录,说明:
  • rsyncuser@192.168.99.237::bakup , rsyncuser:同步的用户在备服务器上设置 ,192.168.99.237:备服务器地址, ::backup:模块名称,同步路径在备服务器上设置
  • init :为false时表示只同步lsyncd进程启动以后发生改动事件的文件,否则,反之,默认为true;
  • delay :当命中的事件累计到多少时再触发同步;
  • exclude :通过此选项排除掉不需要同步的文件,可用它自己的正则进行匹配,比如:
  exclude={
  	"*.swp","*.swx"  #排除同步的文件
 },
  • delete :为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除。

它的常用选项:

​ * 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 = /mnt/
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服务
$ systemctl start lsyncd

3.1 rsync配置说明

uid:进程对应的用户
gid:进程对应的用户组
use chroot:安全相关
max connections:最大连接数 0代表不限制
timeout = 300:超时时间, 可选
pid file:进程对应的进程号文件
lock file :锁文件
log file:日志文件
[backup]:模块名称
path:服务器提供访问的目录
ignore errors:忽略错误, 可选
read only = on :可选
list = false:不能列表
hosts allow = 192.168.10.0/24:允许的ip地址,可选
auth users #虚拟用户 secrets file` :虚拟密码

四、测试

由于目录的特殊性,自行测试!

*************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
原文地址:https://www.cnblogs.com/lvzhenjiang/p/14198841.html