logo
tt's Note
  • 运维
    • 数据库
    • linux
    • vpn
    • 日志
    • 中间件
    • 服务
    • 监控
    • shell
    • windows
    • 语言
    • 云服务
    • 其他
  • 开发
    • 工具
  • 软件
    • 浏览器
    • 多端
    • win
    • mac
    • 网站
  • 项目
    • 效率工具
    • 兴趣
  • 脚本
    • jenkins
    服务概览
    ansible
    chrony时间服务器
    dnsmasq
    ffmpeg
    frp
    ftp
    gitea
    gitlab
    jenkins
    lsyncd
    minio(私有化oss)
    nacos
    nexus3(私有仓库)
    ossftp
    redmine
    registry(docker私有仓库)
    saltstack
    svn
    上一页jenkins下一页minio(私有化oss)

    #lsyncd

    自动目录同步,调用系统的rsync

    开源地址

    配置文件文档地址

    #build

    #Dockerfile

    Dockerfile

    #启动

    #setup.sh

    #!/bin/bash
    
    docker kill lsyncd
    docker rm lsyncd
    docker run -d --name lsyncd \
    --net host \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/timezone:/etc/timezone:ro \
    -v $(pwd)/log:/var/log/lsyncd \
    -v $(pwd)/config/lsyncd.lua:/etc/lsyncd.lua \
    -v /tmp:/tmp \
    registry.cn-hangzhou.aliyuncs.com/buyfakett/lsyncd:s3-alpine
    

    #配置

    #lsyncd.lua

    此配置用于ssh同步文件

    settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status",
        inotifyMode = "CloseWrite",
        maxProcesses = 8,
    }
    sync {
        default.rsync,
        source    = "/tmp/test2",
        target    = "root@192.168.1.1:/tmp/test1",
        maxDelays = 5,
        delay = 30,
        delete = false,
        exclude = { },
        -- init = false,
        rsync     = {
            binary = "/usr/bin/rsync",
            archive = true,
            compress = true,
            bwlimit   = 1500,
            rsh = "sshpass -p password ssh -p 22 -o StrictHostKeyChecking=no"
        }
    }
    

    rsync同步的时候会有临时文件,我们要同步到本地挂载的oss中,不能有临时文件,就可以用到以下配置

    settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status",
        inotifyMode = "CloseWrite",
        maxProcesses = 8,
    }
    sync {
        default.rsync,
        source    = "/tmp/test1",
        target    = "/data/oss",
        maxDelays = 5,
        delay = 30,
        delete = false,
        exclude = { ".*" },
        -- init = false,
        rsync     = {
            binary = "/usr/bin/rsync",
            archive = true,
            compress = true,
            inplace = true,
        }
    }
    
    多种配置示例
    settings {
        logfile ="/usr/local/lsyncd-2.1.5/var/lsyncd.log",
        statusFile ="/usr/local/lsyncd-2.1.5/var/lsyncd.status",
        inotifyMode = "CloseWrite",
        maxProcesses = 8,
        }
    -- I. 本地目录同步,direct:cp/rm/mv。 适用:500+万文件,变动不大
    sync {
        default.direct,
        source    = "/tmp/src",
        target    = "/tmp/dest",
        delay = 1
        maxProcesses = 1
        }
    -- II. 本地目录同步,rsync模式:rsync
    sync {
        default.rsync,
        source    = "/tmp/src",
        target    = "/tmp/dest1",
        excludeFrom = "/etc/rsyncd.d/rsync_exclude.lst",
        rsync     = {
            binary = "/usr/bin/rsync",
            archive = true,
            compress = true,
            bwlimit   = 2000
            }
        }
    -- III. 远程目录同步,rsync模式 + rsyncd daemon
    sync {
        default.rsync,
        source    = "/tmp/src",
        target    = "syncuser@172.29.88.223::module1",
        delete="running",
        exclude = { ".*", ".tmp" },
        delay = 30,
        init = false,
        rsync     = {
            binary = "/usr/bin/rsync",
            archive = true,
            compress = true,
            verbose   = true,
            password_file = "/etc/rsyncd.d/rsync.pwd",
            _extra    = {"--bwlimit=200"}
            }
        }
    -- IV. 远程目录同步,rsync模式 + ssh shell
    sync {
        default.rsync,
        source    = "/tmp/src",
        target    = "172.29.88.223:/tmp/dest",
        -- target    = "root@172.29.88.223:/remote/dest",
        -- 上面target,注意如果是普通用户,必须拥有写权限
        maxDelays = 5,
        delay = 30,
        -- init = true,
        rsync     = {
            binary = "/usr/bin/rsync",
            archive = true,
            compress = true,
            bwlimit   = 2000
            -- rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
            -- 如果要指定其它端口,请用上面的rsh
            }
        }
    -- V. 远程目录同步,rsync模式 + rsyncssh,效果与上面相同
    sync {
        default.rsyncssh,
        source    = "/tmp/src2",
        host      = "172.29.88.223",
        targetdir = "/remote/dir",
        excludeFrom = "/etc/rsyncd.d/rsync_exclude.lst",
        -- maxDelays = 5,
        delay = 0,
        -- init = false,
        rsync    = {
            binary = "/usr/bin/rsync",
            archive = true,
            compress = true,
            verbose   = true,
            _extra = {"--bwlimit=2000"},
            },
        ssh      = {
            port  =  1234
            }
        }