rsync+inotify实现文件夹实时同步

时间:2022-05-27 11:30:30

最近需要使用到文件夹实时同步的功能,参照网页上的相关文章,实现了相应的功能,在这里记录下,以便后面有需要时能再找回来。

一、rsync和inotify的安装

rsync-3.0.9.tar.gz下载地址:http://download.csdn.net/detail/haimingwei_haimian/9455659

inotify-tools-3.14.tar.gz下载地址:


rsync和inotify的安装都比较简单,基本都是下面的三个步骤:

./configure --prefix=指定的安装目录

make

make install

安装完成后,再分别配置服务端和客户端的配置文件。


二、客户端配置文件rsync.conf

uid=root
gid=root
use chroot=no
max connections=10
strict modes=yes
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[lutong]
path=/home/support/server/tomcat-client/webapps/resources/
comment=lutong
ignore errors
read only=no
write only=no
hosts allow=xxx.xxx.xxx.xxx
hosts deny=*
list=false
uid=root
gid=root
auth users=lutong
secrets file=/usr/local/rsync/rsync.passwd
主要的几个参数如下:

[lutong] 认证模块的名称,此名称可*定义,只要保证客户端与服务端的一致即可。

path 客户端需要进行同步的文件夹的绝对路径。

host allow 服务端的主机IP地址

auth users 用户名,这里的用户名并不是系统的用户

secrets file 密码文件,实现同步而定义的一个密钥文件


三、服务端启动文件rsync.sh

#!/bin/bash 
host=<span style="font-family: Arial, Helvetica, sans-serif;">xxx.xxx.xxx.xxx</span>
src=/home/support/tomcat-server/webapps/resources
des=lutong
user=lutong
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src \
| while read files
do
/usr/bin/rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd $src $user@$host::$des
echo "${files} was rsynced" >>/opt/rsync.log 2>&1
done
主要的几个参数如下:

host 客户端服务器的IP地址。

des 客户端配置的认证模块名称,必须与客户端设置的值一致。

user 用户名


四、用户名和密码文件rsync.passwd

客户端rsync.passwd内容如下:

lutong:lt2016

格式:用户名:密码

服务端rsync.passwd内容如下:

lt2016

服务端的内容只需要有密码就可以了

在上面的配置文件中有这么一个文件

<span style="white-space:pre"></span>/usr/local/rsync/rsync.passwd

根据实际情况,把这个路径改为实际的rsync.passwd文件所在的路径即可,密码文件还需要设置文件权限为600:

chmod 600 rsync.passwd


五、启动客户端和服务端

首先要客户端的rsync,启动命令如下:

/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf


然后再启动服务端的rsync.sh,启动命令如下:

sh /xx/xx/rsync.sh &


到此如果没有什么意外情况的话,基本就可以实现文件夹实时同步了。

参照文章:http://www.jb51.net/article/57011.htm