基于rsync和inotify的服务器文件同步
基于rsync和inotify的服务器文件同步
使用场景:
使用于应用服务器中的集群,需要同时部署多个服务时。使用了同步,只需修改服务端的文件,它会自动同步到客户端的机器上,从而保证了代码的一致性。
安装需要软件:
inotify-tools-3.13.tar.gz,rsync-3.1.1.tar.gz
客户安装步骤:
- 检查系统是否安装rsync,如果安装则不需要重新安装。如没有安装请进行第二步。
-
安装rsync。
tar zxvf rsync-3.1.1.tar.gz cd rsync-3.1.1 ./configure ; make ; make install
-
创建配置文件
mkdir /etc/rsyncd/ vim /etc/rsyncd/rsyncd.conf
-
修改配置文件
# Section 1: Global settings port = 873 uid = root #用户 gid = root #用户所在组 use chroot = yes read only = no max connections = 7 pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log #日志输入 hosts allow = 192.168.1.1 #服务器端的地址 transfer logging = yes log format = %t %a %m %f %b syslog facility = local3 timeout = 300 # Section 2: Directory to be synced [mp3] #模块名称,服务器端会根据这个名称进行查找 path = /data/mp3 #同步文件的目录 list = false ignore errors = yes auth users = root secrets file = /etc/rsyncd/rsyncd.pass #用户名、密码所在文件
-
创建密码文件/etc/rsyncd/rsyncd.pass
root:123456 #用户名、密码
-
修改rsyncd.pass的权限
# chmod 600 /etc/rsyncd/rsyncd.pass #注意:一定要是600的权限,其它权限不好用
- 启动服务,进行验证
#启动服务 # /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf 查看状态,是否成功 # netstat -nutlp | grep :873
服务器安装配置:
- 检查是否安装rsync软件,如果没有安装进行安装步骤参考客户端,但不需要配置。
- 安装inotify软件
tar xzvf inotify-tools-3.13.tar.gz cd inotify-tools-3.13 ./configure --prefix=/usr/local/inotify make make install
- 创建配置文件并修改权限
#创建密码文件 # vim /etc/rsyncd/rsyncd.pass #此文件中只需写入密码即可 123456 #修改权限,请不要使用其它权限 chown 600 /etc/rsyncd/rsyncd.pass
- 建立自动同步的脚本,使用inotifywait监控目录,当监控目录改变的时候,调用rsync同步改变的文件
# vim /var/tmp/auto_sync.sh #!/bin/bash # DESTHOST=192.168.1.107 #客户端地址 DESTHOSTDIR=/data/mp3/ #客户端目录 SRCDIR=/data/mp3/ #服务端目录 inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write,modify,delete,create,attrib $SRCDIR | while read DATE TIME DIR FILE; do FILECHANGE=${DIR}${FILE} echo "At ${TIME} on ${DATE}, file $FILECHANGE will be backed up via rsync" >> /var/log/mp3sync.log rsync -avz --password-file=/etc/rsyncd/rsyncd.pass $SRCDIR [email protected]${DESTHOST}::mp3 &>/dev/null && \ echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> /var/log/mp3sync.log done
- 修改此文件权限
#修改权限 #chmod u+x /var/tmp/auto_sync.sh #启动服务 # /var/tmp/auto_sync.sh & #开机自动运行 # echo '/var/tmp/auto_sync.sh &' >> /etc/rc.local
- 验证是否成功,在服务器对应目录下新增一个文件,去客户端目录下查看是否有此文件。