inotify+rsync
优点:监控文件,实时同步
缺点:
1、并发文件大于200个(10-100K),同步有延迟
2、单线程的,单进程的
RSYNC服务器与前面一样
客户端配置:
rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y inotify-tools
(可以使用编译安装,因为inotify收录进了epel源,所以这里直接指定epel源安装)
命令:
inotifywait :被监控目录文件上等待特定文件系统时间(open,close,delete等)发生,然后指定后处于阻塞状态,适用于shell
inotifywath:手机被监视的文件系统使用度统计数据,指文件系统化劲的次数统计。
inotifywait:
-m 永远实时监督文件,目录的变化
-d|--deamon:后台运行
-r:递归,对子目录监控
-e:事件:
事件类型:
access:文件被访问
modify:文件被写入
attrib:元数据被修改。包括权限、时间戳、扩展属性等等
close_write:打开的文件被关闭,是为了写文件而打开文件,之后被关闭的事件
close_nowrite:read only模式下文件被关闭,即只能是为了读取而打开文件,读取结束后关闭文件的事件
close:是close_write和close_nowrite的结合,无论是何种方式打开文件,只要关闭都属于该事件
open:文件被打开
moved_to:向监控目录下移入了文件或目录,也可以是监控目录内部的移动
moved_from:将监控目录下文件或目录移动到其他地方,也可以是在监控目录内部的移动
move:是moved_to和moved_from的结合
moved_self:被监控的文件或目录发生了移动,移动结束后将不再监控此文件或目录
create:在被监控的目录中创建了文件或目录
delete:删除了被监控目录中的某文件或目录
delete_self:被监控的文件或目录被删除,删除之后不再监控此文件或目录
umount:挂载在被监控目录上的文件系统被umount,umount后不再监控此目录
isdir :监控目录相关操作
inotifywait –mrqd –timefmt ‘%d/%m/%y %H:%M’ –format ‘%T %w%f’ -e create /backup
同步脚本编写:
#/bin/bash
#
#
Filepath=/data
RsyncIP=192.168.138.131
inotifywait –mrq --format ‘%w%f’ -e close_write,delete $Filepath | while read file
do
cd $Filepath
if [ -f $file ];then
rsync –avz $file --delete ming@$RsyncIP::backup --password-file=/rsyncd/passwd
else
cd $Filepath && \
rsync –avz ./ --delete ming@$RsyncIP::backup --password-file=/rsyncd/passwd
nohup ./1.sh &
# 调入后台
# nohup sh test.sh >out.log 2>&1 </dev/null &
其他相关的:
/proc/sys/fs/inotify/下的三个文件
max_queued_events:inotifywait或inotifywatch命令可以监视的文件数量(655350)
max_user_instances:每个用户可以运行的inotifywait或inotifywatch命令的进程数
max_user_watches:可以监视文件的数量(655350)