rsync+inotify实现远程同步

简介:

rsync可以实现文件或目录的远程同步。

inotify可以实现对远程目录的监控(删除,创建,修改等),可以实时监控目录的操作,如果有新建的写入操作,可以同步到远程备份的主机上去,但无法实现如果监控的目录有删除的操作,远程端无法删除。

rsync的部署

在服务器存储端的操作

vim/etc/rsyncd.conf

uid = rsync

gid = rsync

use chroot = no

max connections= 2000

timeout = 600

pid file =/var/run/rsyncd.pid

lock file =/var/run/rsync.lock

log file =/var/log/rsyncd.log

ignore errors

read only =false

list = false

hosts allow = 10.0.0.0/16      #允许的主机

hosts deny =0.0.0.0/32       #拒绝的主机

auth users =rsync_backup

secrets file =/etc/rsync.password

#######################################

[data]                      #同步时,本地具体路径的代称

comment = www

path = /data/log/            #数据存放在本地的具体路径


#创建用于存储备份数据的目录

mkdir /data/log-p

#添加用于同步文件的用户

useradd rsync-M  -s /sbin/nologin

#修改存储备份文件的目录权限

chown -Rrsync.rsync /data/log/

#设置虚拟用户文件密码

echo"rsync_backup:data" >/etc/rsync.password

chmod 600/etc/rsync.password

#启动服务

/usr/bin/rsync –daemon

#验证监听端口是否开启

ss -nult

  873

在客户端的设置

#设置虚拟用户的密码文件

echo"data" >/etc/rsync.password

chmod 600/etc/rsync.password

验证是否可以同步

rsync -avz /data/ [email protected]::data --password-file=/etc/rsync.password

上面命令的解释:

同步本地/data/目录下的内容到服务器存储端

[email protected] :服务器存储端的虚拟用户和IP地址

::data   : 服务器存储端的具体路径的代称,在服务器端的配置文件里设置的

--password-file=/etc/rsync.password:本地客户端的存放密码的文件

inotify的部署:

#查看客户端是否支持inotify,出现以下信息说明支持

ls -lsart/proc/sys/fs/inotify 

0 -rw-r--r-- 1root root 0 Dec 20 10:16 max_user_watches

0 -rw-r--r-- 1root root 0 Dec 20 10:16 max_user_instances

0 -rw-r--r-- 1root root 0 Dec 20 10:16 max_queued_events

#安装inotify

yum -y installinotify-tools

#验证是否安装成功

rpm -qa inotify-tools

修改配置添加参数

vi/etc/sysctl.conf

fs.inotify.max_queued_events=99999999

fs.inotify.max_user_watches=99999999

fs.inotify.max_user_instances=65535

编写脚本来实现监控同步

#!/bin/bash

#This is Autosync script

inotify="/usr/bin/inotifywait"

$inotify -mr --format'%w%f' -e create,close_write/data/log|\  (fastdfs服务器监听的目录)

while read line

do

 rsync -avz [email protected]::data --password-file=/etc/rsync.password

echo "  $line" >> /tmp/rsync.log   

done

你可能感兴趣的:(rsync+inotify实现远程同步)