lsyncd+rsync的用途

在项目运维中发现有的文件真的是十几台,二十多台文件中的内容都是一模一样的。这样上传文件、备份文件以及删除文件真的真的让我这种懒人受不了。所以我决定使用lsyncd+rsync来减少我的工作量。目前我的做法是所有主机留一台不使用lsyncd+rsync,其余主机安装lsyncd+rsync,这样做的目的是因为官网中的一段声明,也是做到万无一失。只需要修改两台服务器的内容也很省时间了呀。下面请看lsyncd官网的声明:

centos rsync多线程 centos7 rsync配置_rsync


为了避免发生故障和错误,所以决定让一台服务器充当备份的角色。

lsyncd和rsync的简单介绍

1 Lsyncd使用文件系统事件接口(inotify或fsevents)来监视对本地文件和目录的更改。Lsyncd将这些事件整理几秒钟,然后生成一个或多个进程以将更改同步到远程文件系统。默认同步方法是rsync。因此,Lsyncd是一种轻量级的实时镜像解决方案。Lsyncd相对容易安装,不需要新的文件系统或块设备。Lysncd不会妨碍本地文件系统性能。

2 rsync是一个开源 实用程序,提供快速增量文件传输。rsync可以在GNU通用公共许可证下免费获得,目前由Wayne Davison维护 。
可见lsyncd是使用rsync实现文件同步的,请知晓两个服务的关系。

虚拟机安装配置

系统:centos7

注意

1 关闭selinux。原因如下:

不关闭selinux会出现如下报错:

centos rsync多线程 centos7 rsync配置_lsyncd_02


2 我是在虚拟机上模拟搭建的,为了配置的时候能让客户端主机找到服务端主机IP,需要将服务端IP加到客户端hosts文件中。当然也有别的方法,都可以,为了省事我就这么干了。否则客户端rsync会报如下的错误:

centos rsync多线程 centos7 rsync配置_centos rsync多线程_03


3 文件同步不要在/tmp目录下进行,tmp目录是临时文件目录,正常情况下直接在这里创建目录同步会不停的报错,截图如下:

centos rsync多线程 centos7 rsync配置_lsyncd_04


当然有兴趣的人可以研究一下怎么样才能同步tmp下的文件,个人认为没有必要也不符合正常逻辑。

4 如果使用的是yum源安装,首先将自己的yum源改为了centos7阿里yum源或者其他yum源,使安装顺利进行。

5 为了方便我对服务器进行了ssh免密操作,这样就少配置了一行关于服务器密码的内容。

开始yum安装

服务端安装:lsyncd+rsync
客户端安装:rsync
安装lsyncd命令:yum -y install lsyncd (假如提示缺少包无法安装,那就先安装它的依赖包:yum install lua lua-devel pkgconfig gcc asciidoc)
安装rsync命令:yum -y install rsync

配置文件配置

具体参数请查看官网介绍:
lsyncd的官网:http://axkibe.github.io/lsyncd/
rsync的官网:http://rsync.samba.org/

lsyncd常用配置

配置就按照官网的标准配置来就可以,如果需要特别需求增加参数或者修改参数配置就可以了。在这里不介绍参数的具体内容,因为这些东西官网很详细,真的很详细。

default.rsync模式配置

标准配置格式如下:

sync {
    default.rsync,
    source    = "/home/user/src/",
    target    = "foohost.com:~/trg/",
    delay     = 15, 
    rsync     = {
        binary   = "/usr/local/bin/rsync",
        archive  = true,
        compress = true
    }
}

default.rsyncssh模式配置

此配置与标准rsync配置的不同之处在于,它使用ssh命令在目标主机上本地移动文件或目录,而不是删除和再次传输。
配置格式如下:

settings {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/var/log/lsyncd-status.log",
    statusInterval = 20
}

sync {
   default.rsyncssh,
   source="/srcdir",
   host="remotehost",
   excludeFrom="/etc/lsyncd.exclude",
   targetdir="/dstdir",
   rsync = {
     archive = true,
     compress = false,
     whole_file = false
   },
   ssh = {
     port = 1234
   }
}

default.direct模式配置

值得一提的是这个模式在保证本地两个目录的同步时性能优于 default.rsync模式。

sync {
    default.direct,
    source  = "/home/user/src/",
    target  = "/home/user/trg/"
}

当然配置方法还有很多,有兴趣的可以去研究一下。我是能用就行了,实现自己的目的就是好的。

rsync配置简介

rsync需要配置的是在客户端。
我的配置格式是这样的:

[backup]
path = /srcdir
hosts allow = 服务端IP
list = true
uid = 用户
gid = 用户所在的组
read only = false
use chroot = no

也有其他的配置方式,比如官网上的方法:

uid = nobody
gid = nobody
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid

[ftp]
        path = /var/ftp/./pub
        comment = whole ftp area (approx 6.1 GB)

[sambaftp]
        path = /var/ftp/./pub/samba
        comment = Samba ftp area (approx 300 MB)

[rsyncftp]
        path = /var/ftp/./pub/rsync
        comment = rsync ftp area (approx 6 MB)

[sambawww]
        path = /public_html/samba
        comment = Samba WWW pages (approx 240 MB)

[cvs]
        path = /data/cvs
        comment = CVS repository (requires authentication)
        auth users = tridge, susan
        secrets file = /etc/rsyncd.secrets

最后,配置简单的就是这样的。个性化以及其他需求的配置需要调整配置,灵活运用吧请!