您现在的位置是:首页 >学无止境 >lsyncd技术使linux服务器上的项目实现同步网站首页学无止境

lsyncd技术使linux服务器上的项目实现同步

三只小菜猿 2023-02-09 10:37:26
简介【代码】debain使用lsyncd技术使linux服务器上的项目实现同步。

**下面开始详细讲解配置过程及过程中可能遇到的问题:

现有两台linux主机:**

192.168.1.101  //主机器
192.168.1.102  //辅机器

以下操作均在主机器上进行:

安装lsyncd和rsync

apt-get install lsyncd
apt install rsync

查看安装版本

lsyncd -version

创建必要文件夹

mkdir /etc/lsyncd
mkdir /var/log/lsyncd
touch /var/log/lsyncd/lsyncd.{log,status}

配置免密登陆

**ssh-keygen -t rsa
ssh-copy-id root@192.168.1.102  //用户名@辅机器的ip地址;执行后需输入辅机器的远程连接密码
ssh root@192.168.1.102 //无需密码即可登陆**

端口默认不是22的话使用以下命令

ssh-copy-id -i /root/.ssh/id_rsa.pub -p 20009 root@192.168.1.102//-p为端口

配置文件

cd /etc/lsyncd/
vim lsyncd_nginx.lua

配置文件内容:

settings  {
    logfile = "/var/log/lsyncd/lsyncd.log",  --定义日志文件
    statusFile = "/var/log/lsyncd/lsyncd.status", --定义状态文件
    maxProcesses = 20  -- 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程
}

sync {
        default.rsyncssh,
        source = "/home/ubuntu/test",  --源目录
        host = "root@192.168.1.11",   --目的主机
        targetdir = "/home/ubuntu/test", --远程目录
        exclude = {                      --需要排除的文件或文件夹
        "application/config/database.php",
        "application/config/mf_config.php",
        "application/wxRefundNotifyLog.txt"
     },
        init = false, --这是一个优化选项,当init = false,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是true
        delay = 0, --延时同步的秒数

rsync  = {
         binary    = "/usr/bin/rsync",
         archive   = true,
         compress  = true, --压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
         verbose   = true
  },

ssh   = {
         port  = 22
        }
}

保存后执行以下命令重启

/etc/init.d/lsyncd restart

运行lsyncd

lsyncd lsyncd_nginx.lua

查看是否运行

ps -ef |grep lsyncd

root      8018     1  0 13:49 ?        00:00:00 lsyncd lsyncd_nginx.lua
root      8070  7802  0 13:50 pts/2    00:00:00 grep --color=auto lsyncd

最后在主服务器的/home/ubuntu/test下创建一个文件会发现辅服务器上也会有这个文件

问题: 如果未能实现同步,可查看/var/log/lsyncd/lsyncd.log日志文件内容 如果内容中有:ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory 则你需要执行:

sudo apt install ssh-askpass

备注:同步需要在所有服务器都要安装环境,主服务器是进行配置,编写lua脚本进行同步,此外可以此可以配置多台服务器进行文件同步,设置同步方式有多种,可以自行查询详细参数。


梦想加空间!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。