7

CentOS7下使用Lsyncd实现文件实时同步

 8 months ago
source link: https://blog.51cto.com/u_64214/8925293
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Lsyncd简单介绍

Lsyncd 使用文件系统事件接口(inotify 或 fsevents)来监视本地文件和目录的更改。

Lsyncd 在几秒钟内将这些文件事件整理核对后,然后生成一个或多个进程以将更改同步到远程文件系统。默认使用的同步方法是rsync。因此,Lsyncd 是一种轻量级的实时镜像解决方案。

Lsyncd 相对容易安装,不需要新的文件系统或块设备。Lysncd 不会影响本地文件系统的性能。作为 rsync 的替代方案,Lsyncd 还可以通过 rsync+ssh 推送更改。当文件或目录被重命名或移动到本地树中的新位置时,rsync+ssh 允许更有效的同步。(相比之下,plain rsync 通过删除旧文件然后重新传输整个文件来执行移动。)

Lsyncd 2.2.1 要求 rsync >= 3.1。

官方文档:

https://lsyncd.github.io/lsyncd/

下面介绍CentOS7下使用Lsyncd实现文件实时同步

  • 源服务器A:192.168.31.230 
  • 目标服务器B:192.168.31.60 

需求:将A服务器上/var/log/nginx/目录下文件实时同步到B服务器中,并排除error.log*

1、A服务器上安装lsyncd

前提是有配置EPEL源

yum install lsyncd
CentOS7下使用Lsyncd实现文件实时同步 _服务器

(图片可点击放大查看)

2、A服务器配置到B服务器的免密登录

ssh-keygen -t rsa -b 4096
ssh-copy-id -p 8122 [email protected]
ssh -p 8122 [email protected]
CentOS7下使用Lsyncd实现文件实时同步 _文件系统_02

(图片可点击放大查看)

3、配置/etc/lsyncd.conf

mv /etc/lsyncd.conf /etc/lsyncd.conf_default
vi /etc/lsyncd_exclude.lst
vi /etc/lsyncd.conf
添加如下内容
/etc/lsyncd.conf
settings {
   logfile    = "/var/log/lsyncd/lsyncd.log",
   statusFile = "/tmp/lsyncd.status",
   insist = true,
   inotifyMode = "Modify",
   statusInterval = 1
}
sync {
   default.rsyncssh,
   source="/var/log/nginx/",
   host="192.168.31.60",
   targetdir="/data/logs_backup",
   excludeFrom="/etc/lsyncd_exclude.lst",
   maxDelays = 5,
   delay = 0,
   rsync = {
     archive = true,
     compress = false,
     -- verbose   = true
   },
   ssh = {
     port = 8122
   }
}

要排除error.log*

vi /etc/lsyncd_exclude.lst 
error.log*
CentOS7下使用Lsyncd实现文件实时同步 _文件系统_03

(图片可点击放大查看)

CentOS7下使用Lsyncd实现文件实时同步 _配置文件_04

(图片可点击放大查看)

4、配置文件检查测试

lsyncd -nodaemon /etc/lsyncd.conf运行查看下是否有报错,如果有报错根据报错情况排查配置文件问题

lsyncd -nodaemon /etc/lsyncd.conf

如下图所示,当curl http://192.168.31.230触发了access.log变动时会触发同步 

CentOS7下使用Lsyncd实现文件实时同步 _文件系统_05

(图片可点击放大查看)

如果没有报错直接退出后就可以使用systemctl start lsyncd启动lsyncd即可

5、设置为服务后台运行

systemctl enable lsyncd.service
systemctl start lsyncd.service
tail -f /var/log/lsyncd/lsyncd.log
CentOS7下使用Lsyncd实现文件实时同步 _文件系统_06

(图片可点击放大查看)

以上就是使用Lsyncd实现文件自动同步的过程

要比之前的文章 记一次利用GrayLog实现采集与备份云服务器Web访问日志的实现过程的方式更简单


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK