实时同步---------lsyncd

lsyncd是一个用lua编写的工具,结合inotify和rsync,提供实时文件同步功能。它通过延迟或累计触发解决大量文件同步问题。配置文件简洁,支持多种工作模式。示例展示了如何配置lsyncd同步本地目录到远程服务器,并限制同步带宽。
摘要由CSDN通过智能技术生成
https://github.com/lsyncd/lsyncd

Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过rsync去差异同步,达到实时的效果。
我认为它最令人称道的特性是,完美解决了 inotify + rsync海量文件同步带来的文件频繁发送文件列表的问题 —— 通过时间延迟或累计触发事件次数实现。
另外,它的配置方式很简单,lua本身就是一种配置语言,可读性非常强。
lsyncd也有多种工作模式可以选择,本地目录cp,本地目录rsync,远程目录rsyncssh。

实现简单高效的本地目录同步备份(网络存储挂载也当作本地目录),一个命令搞定。

lsyncd安装

[root@nfs-31 ~]#yum install lsyncd -y

修改配置文件

1、只监控一个目录
[root@nfs-31 ~]#cat /etc/lsyncd.conf 
settings {
    logfile      ="/var/log/lsyncd/lsyncd.log",
    statusFile   ="/var/log/lsyncd/lsyncd.status",
    inotifyMode  = "CloseWrite",
    maxProcesses = 8,
    }

sync {
    default.rsync,
    source    = "/nfs-data",
    target    = "rsync_backup@172.16.1.41::data",
    delete= true,
    exclude = {".*"},
    delay=1,
    rsync     = {
        binary    = "/usr/bin/rsync",
        archive   = true,
        compress  = true,
        verbose   = true,
        password_file="/etc/rsync.pwd",
        _extra={"--bwlimit=200"}
        }
    }

2、监控多个目录
[root@nfs-31 ~]#cat /etc/lsyncd.conf 
settings {
    logfile      ="/var/log/lsyncd/lsyncd.log",
    statusFile   ="/var/log/lsyncd/lsyncd.status",
    inotifyMode  = "CloseWrite",
    maxProcesses = 8,
    }

sync {
    default.rsync,
    source    = "/nfs-data",
    target    = "rsync_backup@172.16.1.41::data",
    delete= true,
    exclude = {".*"},
    delay=1,
    rsync     = {
        binary    = "/usr/bin/rsync",
        archive   = true,
        compress  = true,
        verbose   = true,
        password_file="/etc/rsync.pwd",
        _extra={"--bwlimit=200"}
        }
    }

sync {
    default.rsync,
    source    = "/nfs-nginx",
    target    = "rsync_backup@172.16.1.41::backup",
    delete= true,
    exclude = {".*"},
    delay=1,
    rsync     = {
        binary    = "/usr/bin/rsync",
        archive   = true,
        compress  = true,
        verbose   = true,
        password_file="/etc/rsync.pwd",
        _extra={"--bwlimit=200"}
    }
}

配置文件详解 

lsyncd.conf配置选项说明
settings
里面是全局设置,--开头表示注释,下面是几个常用选项说明:

logfile 定义日志文件
stausFile 定义状态文件
nodaemon=true 表示不启用守护模式,默认
statusInterval 将lsyncd的状态写入上面的statusFile的间隔,默认10秒
inotifyMode 指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify
maxProcesses 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程


sync
里面是定义同步参数

default.rsync :本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;
default.direct :本地目录间同步,使用cp、rm等命令完成差异文件备份;
default.rsyncssh :同步到远程主机目录,rsync的ssh模式,需要使用key来认证
source 同步的源目录,使用绝对路径。
target 定义目的地址.对应不同的模式有几种写法:
    /tmp/dest :本地目录同步,可用于direct和rsync模式
    172.29.88.223:/tmp/dest :同步到远程服务器目录,可用于rsync和rsyncssh模式,
    172.29.88.223::module :同步到远程服务器目录,用于rsync模式


rsync

bwlimit 限速,单位kb/s,与rsync相同(这么重要的选项在文档里竟然没有标出)
compress 压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
perms 默认保留文件权限。
password_file 指定密码文件

启动lsyncd服务

[root@nfs-31 ~]#systemctl status lsyncd
● lsyncd.service - Live Syncing (Mirror) Daemon
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-07-26 10:37:44 CST; 8s ago
 Main PID: 10669 (lsyncd)
   CGroup: /system.slice/lsyncd.service
           └─10669 /usr/bin/lsyncd -nodaemon /etc/lsyncd.conf

Jul 26 10:37:45 nfs-31 lsyncd[10669]: sending incremental file list
Jul 26 10:37:45 nfs-31 lsyncd[10669]: deleting 1.txt
Jul 26 10:37:45 nfs-31 lsyncd[10669]: ./
Jul 26 10:37:45 nfs-31 lsyncd[10669]: access.log
Jul 26 10:37:45 nfs-31 lsyncd[10669]: index.html
Jul 26 10:37:45 nfs-31 lsyncd[10669]: liyunlong.jpg
Jul 26 10:37:45 nfs-31 lsyncd[10669]: sent 91 bytes  received 21 bytes  74.67 bytes/sec
Jul 26 10:37:45 nfs-31 lsyncd[10669]: total size is 0  speedup is 0.00
Jul 26 10:37:45 nfs-31 lsyncd[10669]: sent 56,400 bytes  received 93 bytes  37,662.00 bytes/sec
Jul 26 10:37:45 nfs-31 lsyncd[10669]: total size is 57,849  speedup is 1.02

注意点

1、检查你的实时同步服务有没有启动,注意不能三个同时存在,否则会有坑
Inotify-wait

sersync

lsyncd

2、你的配置文件要注意,客户端需要备份的文件名,指定的密码文件,你远程连接的备份服务器主机名以及备份文件名等

3、指定的这些文件的文件权限要注意,否则也会出现不同的报错

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值