如何使用 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 同步,並執行腳本后續的命令。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM