基于rsync+inotify实现文件实时同步(3)

[root@martin bin]# cd /usr/local/inotify-tools/bin
[root@martin bin]# ls
inotifywait  inotifywatch
 
#inotifywait 在被监控的文件或目录上等待特定文件系统事件(open,close,delete等)发生,执行后处于阻塞状态,适合在shell脚本中使用
#inotifywatch 收集被监控的文件系统使用度统计数据,指文件系统事件发生的次数统计
 
inotifywait
-r|--recursive  递归查询目录
q |--quiet    安静模式,尽量输出少
-m |--monitor 始终保持事件监听状态
--excludei  排除文件或者目录时,不区分大小写
--timefmt 指定时间输出的格式
--format 指定命令执行时的信息输出格式,%T为前面的时间格式
 -e  事件

监控:(一般监控这三项即可 删除delete,创建create,修改close_write)
[root@martin bin]# ./inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create,close_write /backup/mysql/ 
#另起窗口 在/backup/mysql/ 下创建文件
[root@martin mysql]# touch c
[root@martin bin]# ./inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create,close_write /backup/mysql/ 
28/05/16 12:04 /backup/mysql/c
28/05/16 12:04 /backup/mysql/c  #触发两次 create  close_write
 
 
#delete
[root@martin mysql]# rm -f a
[root@martin bin]# ./inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create,close_write /backup/mysql/ 
28/05/16 12:04 /backup/mysql/c
28/05/16 12:04 /backup/mysql/c
28/05/16 12:06 /backup/mysql/a

[root@martin scripts]# vim  inotify.sh
#!/bin/bash
inotify=/usr/local/inotify-tools/bin/inotifywait
src=/backup/mysql/
$inotify -mrq --format '%w%f' -e create,close_write,delete $src \
|while read file
do
  cd $src &&
  rsync -az $src --delete tom@sherry::mysql \
  --password-file=/etc/rsyncd.passwd  >/dev/null
done

[root@martin scripts]# chmod +x inotify.sh 
[root@martin scripts]# ./inotify.sh  &
[root@martin scripts]# jobs
[1]+  Running                ./inotify.sh &
[root@martin scripts]# kill %1
[root@martin scripts]# jobs
[1]+  已终止              ./inotify.sh

#server
[root@martin mysql]# /scripts/inotify.sh  &
[root@martin mysql]# pwd
/backup/mysql
[root@martin mysql]# ls
c  d  g  kk  ll
#client
[root@sherry rsync-mysql]# ls
c  d  g  kk  ll
#server服务器创建文件
[root@martin mysql]# touch pp
[root@martin mysql]# ls
c  d  g  kk  ll  pp
#client
[root@sherry rsync-mysql]# ls
c  d  g  kk  ll  pp  #上传完成
 
#server
[root@martin mysql]# rm -f c d
#cilent
[root@martin mysql]# ls
g  kk  ll  pp    #可删除

加入开机启动
echo '/bin/sh  /scripts/inotify.sh  &' >> /etc/rc.local

[root@martin mysql]# ps -ef |grep inotify.sh
root    126119      1  0 12:21 ?        00:00:00 /bin/bash /scripts/inotify.sh
root    126121 126119  0 12:21 ?        00:00:00 /bin/bash /scripts/inotify.sh

RSync实现文件备份同步详解   

利用inotifywait监控主机文件和目录

利用inotify+rsync实现Linux文件批量更新

inotify-tools+rsync实时同步文件安装和配置

rsync同步完整配置

CentOS 6.5下Rsync远程同步

Linux文件夹对比并提取的差分文件技巧-rsync的妙用

Rsync 的详细介绍请点这里
Rsync 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bdc0c70c3d478e51e2e409f759e8a721.html