zoukankan      html  css  js  c++  java
  • [linux] lsyncd同步工具

     环境说明:

    192.168.56.101 同步源
    192.168.56.102 同步目标
    操作系统centos 7
    lsyncd项目地址:https://github.com/axkibe/lsyncd
    

      1.源主机root用户运行同步程序,backup用户验证目标主机;如果不想配密钥验证,同样支持密码验证,在运行时(nodaemon)提示输入或者在配置文件定义password_file参数。

    生成密钥对(略),目标主机添加公钥,注意.ssh和密钥的属主权限,以下xxx、yyy不要直接抄,填写你正确的密钥信息。
    [root@192.168.56.102 ~]# echo "yyy" > /home/backup/.ssh/authorized_keys
    
    源主机添加私钥
    [root@192.168.56.101 ~]# echo "xxx" > /root/.ssh/backup_rsa
    [root@192.168.56.101 ~]# chmod 600 /root/.ssh/backup_rsa
    验证登录
    [root@192.168.56.101 ~]# ssh -i /root/.ssh/backup_rsa backup@192.168.56.102

      2.源主机安装lsyncd,修改配置文件

    安装lsyncd之前先安装epel-release
    [root@192.168.56.101 ~]# yum install -y lsyncd
    [root@192.168.56.101 ~]# rpm -qa | grep lsyncd
    lsyncd-2.2.2-1.el7.x86_64
    [root@192.168.56.101 ~]# cat /etc/lsyncd.conf 
    ----
    -- User configuration file for lsyncd.
    --
    -- Simple example for default rsync, but executing moves through on the target.
    --
    -- For more examples, see /usr/share/doc/lsyncd*/examples/
    -- 
    settings {
      logfile    = "/var/log/lsyncd.log",
      statusFile = "/var/log/lsyncd.status",
    }
    
    sync {
      default.rsyncssh,
      source     = "/data/web/web1",
      host       = "backup@192.168.56.102",
      targetdir  = "/data/backup/web/web1",
      -- 10秒同步一次,默认15秒
      delay      = 10,
      rsync = {
        archive  = true,
        compress = true,
        verbose  = true,
        rsh      = "ssh -o StrictHostKeyChecking=no -i /root/.ssh/backup_rsa",
      }
    }
    
    sync {
      default.rsync,
      source     = "/data/web/web2",
      target     = "backup@192.168.56.102:/data/backup/web/web2",
      rsync = {
        archive  = true,
        compress = true,
        verbose  = true,
        rsh      = "ssh -o StrictHostKeyChecking=no -i /root/.ssh/backup_rsa",
        --_extra   = {"-e","ssh -o StrictHostKeyChecking=no","-e ssh -i /root/.ssh/backup_rsa"}
      }
    }

      3.源主机启动服务,看日志,目标主机检查文件同步

    [root@192.168.56.101 ~]# systemctl start lsyncd
    

    单源多目标需求可参考

    https://www.stephenrlang.com/2015/12/how-to-install-and-configure-lsyncd/

      1.单目录同步到多机器:

    源主机目录/data/web/sh.your.com同步到多机器
    172.16.2.104:/data/web/sh.your.com
    172.16.2.105:/data/web/sh.your.com
    

      2.多目录同步到相同机器:

    源主机多目录
    /data/web/resource.your.com
    /data/web/www.your.com
    同步到相同机器
    172.16.2.99:/data/backup/web/resource.your.com
    172.16.2.99:/data/backup/web/www.your.com
    [root@HD1g-static-website ~]# cat /etc/lsyncd.conf 
    ----
    -- User configuration file for lsyncd.
    --
    -- Simple example for default rsync, but executing moves through on the target.
    --
    -- For more examples, see /usr/share/doc/lsyncd*/examples/
    -- 
    settings {
      logfile    = "/var/log/lsyncd.log",
      statusFile = "/var/log/lsyncd.status",
    }
    
    servers = {
      "backup@172.16.2.104",
      "backup@172.16.2.105",
    }
    for _, server in ipairs(servers) do
    sync {
      default.rsyncssh,
      source     = "/data/web/sh.your.com",
      host       = server,
      targetdir  = "/data/web/sh.your.com",
      delay      = 5,
      rsync = {  
        archive  = true,
        compress = true,
        verbose  = true,
        rsh      = "ssh -o StrictHostKeyChecking=no -i /root/.ssh/backup_rsa",
      }
    }
    end
    
    sites = {
      "resource.your.com",
      "www.your.com",
    }
    for _, site in ipairs(sites) do
    sync {
      default.rsyncssh,
      source     = "/data/web/" .. site,
      host       = "backup@172.16.2.99",
      targetdir  = "/data/backup/web/" .. site,
      delay      = 300,
      rsync = {
        archive  = true,
        compress = true,
        verbose  = true,
        rsh      = "ssh -o StrictHostKeyChecking=no -i /root/.ssh/backup_rsa",
      }
    }
    end
    

      

  • 相关阅读:
    shell 脚本实现yum安装 LAMP 架构的 wordpress
    redis主从及哨兵和cluster集群
    扫描网段中服务器显示状态
    利用for循环输出九九乘法表
    正则表达式取文件后缀
    利用正则表达式实现yes/no判断
    判断输入的IP地址是否合法
    Shell脚本编程基础之shell脚本条件测试命令
    Shell脚本编程基础之shell脚本逻辑运算
    Shell脚本编程基础之shell脚本算术运算
  • 原文地址:https://www.cnblogs.com/hjfeng1988/p/8919679.html
Copyright © 2011-2022 走看看