使用lsync实现linux上的文件实时同步

1.前言

1.1 概述

本文介绍了使用lsync实现linux 上的本地实时同步,本地定时同步的方法。

1.2 实验环境

服务器两台

操作系统: CentOS-7.4

 

软件:

lsyncd-release-2.1.6

lua-5.1.4

cmake-2.8.12

 

本地同步环境信息:

源目录: /root/data/

目的目录: /root/backup/

 

远程同步环境信息:

源主机(即原始文件所在的服务器)的ip地址:10.40.239.234

源目录: /root/data/

目标主机(存放备份文件的服务器)的ip地址:10.40.239.236

目的目录:/root/backup/

2. 同步方法

2.1 本地实时同步

  1. 安装lsyncd

可以使用yum安装 epel-release lsyncd

sudo yum install epel-release

sudo yum install lsyncd

 

或者可以在https://github.com/axkibe/lsyncd/releases/ 下载 lsyncd 安装包。

本文使用的是 lsyncd-release-2.1.6。

不同版本的lsyncd 安装的方法有差别。Lsyncd 2.1.6 的安装方法如下:

 

解压安装文件:

tar zxvf lsyncd-release-2.1.6

 

进入解压后的目录:

cd lsyncd-release-2.1.6

 

执行下面几条命令完成编译安装

cmake .

make & make install

 

  1. 安装 lua 和cmake

yum install lua

yum install lua-devel

yum install cmake

 

  1. 安装lsync之后,编辑配置文件 lsyncd.conf 如下:


settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
        default.rsyncssh,
        source = "/root/data", --源目录
        targetdir = "/root/backup", --目标目录
delete = true, --目标目录是否随源目录删除文件
        delay = 0,
        exclude={“.tmp”}, --源目录中排除的文件
        rsync = {
           binary = "/usr/bin/rsync",
           archive = true, 
           compress = true, 
           verbose = true, 
           owner = true,   --属主
           perms = true,   --权限
           _extra = {"--bwlimit=2000"},
            }
}

 

启动 lsyncd 并设置为开机自启动:

systemctl start lsyncd

systemctl enable lsyncd

这样就实现了本地同步的功能。

 

2.2 远程实时同步


实现远程同步,lsync 有两种工作方式:

一种是使用远程shell程序(如rshssh)来实现文件同步的方式,一种是使用后台进程(daemon)的方式。这里,我们使用远程shell 方式。

 

具体的安装和配置步骤如下:

1. 在源主机和目标主机都安装 lsyncd

sudo yum install epel-release

sudo yum install lsyncd

 

2. 在源主机上配置lsyncd.conf,内容如下:


settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
    default.rsyncssh,
    source = "/root/data", --源目录
    host = "10.40.239.236", --目的主机
    targetdir = "/root/backup", --远程目录
    delete = true,
    delay = 0,
    exclude={},
    rsync = {
           binary = "/usr/bin/rsync",
           archive = true, --归档
           compress = true, --压缩
           verbose = true, 
           owner = true,   --属主
           perms = true,   --权限
           _extra = {"--bwlimit=2000"},
           },
        ssh = {
            port = 22
            }
}

 

 

3. 如果要求源主机主动将文件的差异部分发送给目标主机, 那么源主机需要免密连接到目标主机。所以要在源主机生成公钥和私钥,命令如下:

ssh-keygen -t rsa

输入命令后只需要一直点击enter键即可,直到出现如图界面,那么它提示你公钥和私钥保存在哪个位置。

打开公钥文件/root/.ssh/id_rsa,复制它的内容。

      

4. 在目标主机中,进入目录 /root/.ssh,编辑文件 authorized_keys,将源主机公钥的内容粘贴到文件末尾。

或执行命令:

ssh-copy-id -u eucalyptus -i /root /.ssh/id_rsa.pub root@10.40.239.236

完成公钥的传输。

 

5. 在源主机和目标主机上启动lsyncd 并设置为开机自启动

systemctl start lsyncdsystemctl enable lsyncd
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值