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 本地实时同步
- 安装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
- 安装 lua 和cmake
yum install lua
yum install lua-devel
yum install cmake
- 安装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程序(如rsh、ssh)来实现文件同步的方式,一种是使用后台进程(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 lsyncd
systemctl enable lsyncd