修改 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 同步,并执行脚本后续的命令。

如何使用 lsyncd 实时同步并执行 shell 命令的更多相关文章

  1. Lsyncd实时同步搭建指南

    linux文件实时同步: inotify+rsync.sersync.lsyncd工具比较 一.inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify ...

  2. 第3节 sqoop:7、通过java代码远程连接linux执行shell命令

    数据库的数据同步软件sqoop 数据同步 关系型数据库到大数据平台 任务:sqoop 是批量导入数据太慢,如何做到实时的数据同步 实时的数据同步工具: canal 阿里开源的一个数据库数据实时同步的软 ...

  3. node.js执行shell命令

    nodejs功能强大且多样,不只是可以实现 服务器端 与 客户端 的实时通讯,另一个功能是用来执行shell命令 首先,引入子进程模块 var process = require('child_pro ...

  4. node.js执行shell命令进行服务器重启

    nodejs功能强大且多样,不只是可以实现 服务器端 与 客户端 的实时通讯,另一个功能是用来执行shell命令 1.首先,引入子进程模块var process = require('child_pr ...

  5. GO执行shell命令

    Golang执行shell命令主要依靠exec模块 代码为核心逻辑,并非全部 运行命令 cmd1 = exec.Command("ls") if err = cmd1.Run(); ...

  6. java 执行shell命令及日志收集避坑指南

    有时候我们需要调用系统命令执行一些东西,可能是为了方便,也可能是没有办法必须要调用.涉及执行系统命令的东西,则就不能做跨平台了,这和java语言的初衷是相背的. 废话不多说,java如何执行shell ...

  7. Linux远程执行Shell命令或脚本

    ## 远程执行shell命令 ssh [user]@[server] '[command]' # eg. ssh root@192.168.1.1 'uptime' ## 远程执行本地shell脚本 ...

  8. vim中执行shell命令

    1):!command   不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容   例如   :!ls -l   特别的可以运行:!bas ...

  9. Android Java执行Shell命令

    最新内容建议直接访问原文:http://www.trinea.cn/android/android-java-execute-shell-commands/ 主要介绍Android或Java应用中如何 ...

随机推荐

  1. git pull和push冲突

    http://blog.csdn.net/matrix_laboratory/article/details/18034509 问题描述 1 有人改动了 文件A.java,提交到git 2 我没有pu ...

  2. Java知识点ArrayList

    ArrayList List<ApiSvcVersion> apiSvcVersionList = apiSvcVersionDao.getListByClientId(map1); // ...

  3. Photoshop去图片水印——适用复杂图片上有水印

    该方法适合复杂图片上有水印的,不过这个只适合水印只是文字而没有背景的那种.不是所有的水印图片都适合处理.下面是处理前后的对照   工具/原料   photoshop8.0 方法/步骤   1 打开需要 ...

  4. tcpdump 选项及过滤规则

    tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap (1)t ...

  5. SignalR WebSocket Error during WebSocket handshake: net::ERR_CONNECTION_RESET

    system.web 节点添加: <httpRuntime maxRequestLength="104857600" executionTimeout="1200& ...

  6. Selenium基础知识(七)弹出框处理

    使用switch_to.alert方法来处理弹页面弹出的警告框 页面常见警告框种类:alert/confirm 确认框/prompt switch_to.alert().accept() switch ...

  7. CSU 1859 Gone Fishing(贪心)

    Gone Fishing [题目链接]Gone Fishing [题目类型]贪心 &题解: 这题要先想到枚举走过的湖,之后才可以贪心,我就没想到这,就不知道怎么贪心 = = 之后在枚举每个湖的 ...

  8. Java之.jdk安装-Windows

    jdk安装-windows 1. window + r,然后输入:cmd,打开黑窗口. 2. 分别输入 java -version .javac -version,检查jdk版本信息. 如果javac ...

  9. featuremap尺寸的计算

    对于卷积层,向下取整 对于池化层:想上取整 output=((input+2*pad-dilation*(kernel-1)+1)/stride)+1 input:输入尺寸 output:输出尺寸 p ...

  10. 删除(unfork)github中某个库(repository)

    1.头像->your profile 2.点击某个想要删除的库,出现界面: 3.点击setting,鼠标滚动页面至末尾,出现页面: 4.点击delete this repository: OK!