如何使用 lsyncd 实时同步并执行 shell 命令

修改 lsyncd 的默认配置,不直接执行rsync 进行同步,而是改用自己的脚本。
binary 指定我们的脚本

vim /usr/local/lsyncd/etc/lsyncd.conf

settings  {
   logfile = "/usr/local/lsyncd/logs/lsyncd.log",
   statusFile = "/usr/local/lsyncd/logs/lsyncd.status",
   maxDelays = 100,
   statusInterval = 5,
   delay = 5,
   exitcodes = {[0] = "ok", [1] = "again", [2] = "die"}

   }
sync {
    default.rsync,
    source    = "/data/logs/nginx",
    target    = "sync_user@192.168.31.140::sync_test",
    exclude   = { ".*", "*.tmp", "*.bak" , "*.pid"},
    delete    = true,
    rsync     = {
        binary = "/data/sh/mysync.sh",
        compress = false,
        archive  = true,
        verbose  = false,
        timeout  = 3600,
        password_file = "/usr/local/lsyncd/etc/rsync.pass"
    }
}
编写自己的脚本

vim /data/sh/mysync.sh

#!/bin/bash
/usr/bin/rsync "$@"
result=$?
args="$@"
(
  if [ $result -eq 0 ]; then
     echo "argument:$args" >> /tmp/lsync_test.txt
  fi
) >/dev/null 2>/dev/null </dev/null

exit $result
lsyncd 会调用 /data/sh/mysync.sh 脚本触发 rsync 同步,并执行脚本后续的命令。
posted @   wshenJin  阅读(1067)  评论(8编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示