Lsyncd 测试远程、本地目录自动同步

简介:

Lsyncd是由谷歌公司开发的一款轻量级目录同步工具。采用(inotify或fsevents)监控目录树的变化。rsync+ssh是一个先进的功能配置,这种配置利用SSH来执行文件和目录直接移动到目标上,而不是通过网络再次传送这个到目标。lua语言格定义配置文件。2007年开发出第一个版本lsyncd 1.0。目前最新版本是lsyncd 2.1.5

具体配置操作:

服务器端(文件源)安装配置:

下载地址:https://lsyncd.googlecode.com/files/lsyncd-2.1.5.tar.gz

手册文档:https://github.com/axkibe/lsyncd/wiki/Manual-to-Lsyncd-2.1.x

安装lsyncd工具时需要先安装lua工具,因为配置文件需要采用lua语法。

yum  -y  Install  lua*  lua-devel
tar zxvf lsyncd-2.1.5.tar.gz&&cd lsyncd-2.1.5
./configure �Cprefix=/usr/local/lsyncd-2.1.5
make&&make install
ln -s /usr/local/lsyncd-2.1.5/bin/lsyncd /usr/bin/lsyncd

生成配置文件:

默认没有配置文件,需要自己手动编写,使用lua的语法格式编写。 在安装目录下创建etc目录用于存放主配置文件,创建var目录用于存放日志文件和状态文件。

mkdir  /usr/local/lsyncd-2.1.5/etc&& mkdir  /usr/local/lsyncd-2.1.5/var
cd /usr/local/lsyncd-2.1.5/etc

同步本地目录:

创建主配置文件lsyncd.conf.lua,内容如下:

direct模式配置:

settings{
    logfile ="/usr/local/lsyncd-2.1.5/var/lsyncd.log",
    statusFile ="/usr/local/lsyncd-2.1.5/var/lsyncd.status",
    --nodaemon =true,
    }
                          
    sync{
    default.direct,--default.rsync, or default.rsyncssh,
    source ="/usr/local/src/aa",
    target ="/usr/local/src/bb"
    }

Settings里面是全局设置,logfile定义日志文件,stausFile定义状态文件,--nodaemon=true前面双横线表示注释(‘--’),nodaemon=true表示不启用守护模式。默认是启用。如不启动守护模式,可以将注释取消。

Sync里面是定义同步参数,指定默认以直接模式direct运行。Lsyncd支持rsync、rsyncssh、direct三种模式。Source定义同步源,target定义目的。Direct模式用于同步本地的目录。

使用命令加载配置文件,启动守护进程,自动同步目录操作。

lsyncd  /usr/local/lsyncd-2.1.5/etc/lsyncd.conf.lua

同步远程服务器目录:

远程目录有两种模式,rsync模式和rsyncssh模式。

Rsync模式配置:

settings{
    logfile ="/usr/local/lsyncd-2.1.5/var/lsyncd.log",
    statusFile ="/usr/local/lsyncd-2.1.5/var/lsyncd.status",
    --nodaemon =true,
}
sync{
    default.rsync, --default.rsyncssh,or default.direct,
    source ="/usr/local/src/aa",
    target ="192.168.65.139:/usr/local/src/bb/",
    rsync ={
        binary ="/usr/bin/rsync",
        archive =true,
        compress =true,
    },
}


使用rsync模式可以继承使用rsync的参数。Binary定义rsync命令路径,这里简单使用了归档和压缩参数,可以根据需要指定其它更多的rsync参数。它的格式看起来像这样: /usr/bin/rsync -ltsd --delete --include-from=- --exclude=* SOURCE TARGET

Rsyncssh模式配置:

settings{
        logfile ="/usr/local/lsyncd-2.1.5/var/lsyncd.log",
        statusFile ="/usr/local/lsyncd-2.1.5/var/lsyncd.status",
        statusInterval =20,
        --nodaemon =true,
  delay = 0,
}
sync{
        default.rsyncssh,--default.rsync,or default.direct,
        source ="/usr/local/src/aa",
        host ="10.110.222.167",
        --excludeFrom ="/usr/local/src/aa/test",
        exclude ="test",
        targetdir ="/usr/local/src/test",
        rsync ={
                --binary ="/usr/bin/rsync"(default),
                archive =true,
                compress =true,
        },
        ssh ={
                --binary ="/usr/bin/ssh"(default),
                port =9918,
        }
}


此配置不同于标准的rsync,它使用ssh命令来移动本地文件或目录的目标。此配置产生的Rsync的过程像default.rsync,另外生成/usr/bin/ssh HOST mv ORIGIN DESTINATION命令。 有两个参数需要解释下,delay表示延迟多少秒开始同步。excludeFrom表示排除文件,exclude表示排除目录,注意这里的排除指的是源。

客户端配置:

添加服务器登录key:

因为要使用ssh连接输入密码是需要交互操作,所以设置为key直接登录不需要密码的方式。那么客户端只需要加入服务器端(同步源)上的公钥即可。在服务器端生成ssh密钥对的方法此处省略。

ssh+http代理连接:

linux下的ssh client并不直接支持http代理(http-tunnel代理),需要其他代理软件的辅助。corkscrew就是一个很好的工具。

下载安装corkscrew:

wget http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz
tar zxvf corkscrew-2.0.tar.gz
./configure --prefix=/usr/local/corkscrew
make
make install


简单配置修改~/.ssh/config:

#cat ~/.ssh/config
ProxyCommand /usr/local/corkscrew/bin/corkscrew proxy.test.com 18001 %h %p ~/.ssh/auth
echo “test:%2013#Ops” > ~/.ssh/auth
chmod 600 ~/.ssh/auth


其中/usr/local/corkscrew/bin/corkscrew是程序所在位置;proxy.test.com是代理的地址;18001是端口号。如果是要求身份认证的代理,则把用户名/密码写在一个文件中,这里是:test:%2013#Ops,把这个文件放在~/.ssh/auth,设置权限为600。

现在直接使用ssh命令就自动添加了proxy代理功能。要取消代理连接方式,移除~/.ssh/config文件即可。

测试同步结果:

  1. 同步文件大小:4G

  2. 服务器传输:北京―江苏常州

  3. 采用rsyncssh模式推送,压力点在服务器端

服务器端负载:

01

服务器端网络接口:

02

客户端负载:

03

总结:

总体来说,测试效果还是很不错的。也有不足的地方,比如无法双向同步,比如对实时更新的文件同步效果不是很理想。当然根据自己的需求取舍。DONE!


文章出处:http://www.weekyuan.com



你可能感兴趣的:(服务器,配置文件,下载地址,执行文件,谷歌公司)