lsyncd+rsync的用途
在项目运维中发现有的文件真的是十几台,二十多台文件中的内容都是一模一样的。这样上传文件、备份文件以及删除文件真的真的让我这种懒人受不了。所以我决定使用lsyncd+rsync来减少我的工作量。目前我的做法是所有主机留一台不使用lsyncd+rsync,其余主机安装lsyncd+rsync,这样做的目的是因为官网中的一段声明,也是做到万无一失。只需要修改两台服务器的内容也很省时间了呀。下面请看lsyncd官网的声明:
为了避免发生故障和错误,所以决定让一台服务器充当备份的角色。
lsyncd和rsync的简单介绍
1 Lsyncd使用文件系统事件接口(inotify或fsevents)来监视对本地文件和目录的更改。Lsyncd将这些事件整理几秒钟,然后生成一个或多个进程以将更改同步到远程文件系统。默认同步方法是rsync。因此,Lsyncd是一种轻量级的实时镜像解决方案。Lsyncd相对容易安装,不需要新的文件系统或块设备。Lysncd不会妨碍本地文件系统性能。
2 rsync是一个开源 实用程序,提供快速增量文件传输。rsync可以在GNU通用公共许可证下免费获得,目前由Wayne Davison维护 。
可见lsyncd是使用rsync实现文件同步的,请知晓两个服务的关系。
虚拟机安装配置
系统:centos7
注意:
1 关闭selinux。原因如下:
不关闭selinux会出现如下报错:
2 我是在虚拟机上模拟搭建的,为了配置的时候能让客户端主机找到服务端主机IP,需要将服务端IP加到客户端hosts文件中。当然也有别的方法,都可以,为了省事我就这么干了。否则客户端rsync会报如下的错误:
3 文件同步不要在/tmp目录下进行,tmp目录是临时文件目录,正常情况下直接在这里创建目录同步会不停的报错,截图如下:
当然有兴趣的人可以研究一下怎么样才能同步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
最后,配置简单的就是这样的。个性化以及其他需求的配置需要调整配置,灵活运用吧请!