lsyncd与rsync实时文件同步的配置实例

发布时间:2019-11-25编辑:脚本学堂
为大家介绍如何使用lsyncd与rsync实现实时文件同步的方法,有需要的朋友,可以参考下。

所需软件:lsyncd与rsync
lsyncd( Live Syncing (Mirror) Daemon),工作原理:监视本地(rsync client)的目录,当源数据有文件或目录更新时,更新本地文件或目录到远端机器(rsync server),保持实时文件同步,但是它更新数据时需要远端rsync server运行rsync demon。

配置环境
(1)需要配置rsyncd.conf文件的一端,称为rsync server
(2)不需要配置rsyncd.conf文件的一端,称为rsync client

一、客户端上的配置:
1、安装rsync
 

复制代码 代码示例:
#wget wget http://www.samba.org/ftp/rsync/src/rsync-3.0.6.tar.gz
#tar zvxf rsync-3.0.6.tar.gz
#cd rsync-3.0.6
#./configure --prefix=/usr/local/rsync
#make && make install

2、安装lsyncd
 

复制代码 代码示例:
#wget http://lsyncd.googlecode.com/files/lsyncd-2.0.7.tar.gz
#tar zxvf lsyncd-2.0.7.tar.gz
#cd lsyncd-2.0.7
#./configure
#make && make install
 

3、新建同步目录
服务器和客户端新建同步目录
 

复制代码 代码示例:
#mkdir  /usr/share/test/
#chown nobody:nobody  /usr/share/test/
 

 
二、服务器的配置:
1.安装rsync,同上。
2.配置
 

复制代码 代码示例:
#vi /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[test]
path = /usr/share/test/            #保持数据的目录
hosts allow = 192.168.0.19         #允许访问的主机IP
uid = nobody
gid = nobody
read only = false                  #是否只读
 

 
三、在服务器端启动rsync
 

复制代码 代码示例:
#/usr/local/rsync/bin/rsync --daemon
使rsync随机器启动
echo "/usr/local/rsync/bin/rsync --daemon" >> /etc/rc.local
 

 
四、客户端配置lsyncd
1.建立配置文件lsyncd.conf
 

复制代码 代码示例:
#vi /etc/lsyncd.conf
/usr/share/test/ 192.168.30.206::test
 

说明:/usr/share/test/     #要实时同步的目录
      192.168.30.206       #要实时同步到的远端机器
      test                 #对应远端机器的rsync的tag。
如果要同步多台就在这个文件中每同步一台加一行
 
2.建立lsyncd日志文件
 

复制代码 代码示例:
#vi /etc/logrotate.d/lsyncd
/var/log/lsyncd {
    missingok
    notifempty
    sharedscripts
    postrotate
    /etc/rc.d/init.d/lsyncd restart 2>&1 > /dev/null || true
    endscript
}
 

说明:它的日志保存的文件为/var/log/lsyncd,
 
3.建立lsyncd的启动文件
 

复制代码 代码示例:
#vi /etc/init.d/lsyncd
如下:
#!/bin/bash
#chkconfig: - 80 20
#lsyncd  this is sync service
#
# description: lsyncd  is sync service
/etc/rc.d/init.d/functions
lsyncd="/usr/local/bin/lsyncd"
lockfile="/var/lock/subsys/lsyncd"
pidfile="/var/run/lsyncd.pid"
function_start_lsyncd()
{
    printf "Starting Lsyncd...n"
    while read i
    do
      source=`echo $i | linuxjishu/13830.html target=_blank class=infotextkey>awk '{print $1}'`
      target=`echo $i | awk '{print $2}'`
      $lsyncd -rsync $source $target
    done < /etc/lsyncd.conf
}
function_stop_lsyncd()
{
    printf "Stoping Lsyncd...n"
    killall $lsyncd
}
function_restart_lsyncd()
{
    printf "Restarting Lsyncd...n"
    function_stop_lsyncd
    function_start_lsyncd
}
if [ "$1" = "start" ]; then
    function_start_lsyncd
elif [ "$1" = "stop" ]; then
    function_stop_lsyncd
elif [ "$1" = "restart" ]; then
    function_restart_lsyncd
else
    printf "Usage: lsyncd.sh {start|stop|restart}n"
fi
 

 
脚本加上执行权限:
 

复制代码 代码示例:
#chmod 755 /etc/init.d/lsyncd

启动lsyncd:
 

复制代码 代码示例:
#/etc/init.d/lsyncd start

确认lsyncd是否启动
 

复制代码 代码示例:
#/etc/rc.d/init.d/lsyncd status
lsyncd (pid 22863) is running...

把lsyncd加入到随机器启动当中
 

复制代码 代码示例:
#chkconfig lsyncd on

测试:
在服务器端的/usr/share/test/下建立一个文件。客户端的/usr/share/test/发现新建的文件已经同步过去了,养成定期检查日志文件/var/log/lsyncd的习惯,及时排查相关错误。
测试过程中把服务器端的lsyncd杀掉,在服务器端的/usr/share/test/中新建与删除文件,然后重启lsyncd服务器,在客户端查看时,发现对应的文件已经删除或同步过去了。

以上就是有关如何用lsyncd与rsync配置实时文件同步的全部内容了,希望对大家有所帮助。