简介:
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