rsync+inotify
来源:互联网 发布:百川砍价源码 编辑:程序博客网 时间:2024/06/10 19:49
rsync+inotify
- rsyncinotify
- 判断是否支持inotify
- inotify监控事件
- rsync inotify实时备份
inotify是Linux核心子系统之一,做为文件系统的附加功能,它可监控文件系统并将异动通知应用程序。本系统的出现替换了旧有Linux核心里,拥有类似功能之dnotify模块
优点
相较于被inotify替换较旧的 dnotify模块,inotify有诸多益处。[2][3]在旧的模块中,程序必须为每一个被监控的目录创建file descriptor,这种作法很容易让进程拥有的file descriptor逼近系统允许的上限,进而形成瓶颈。dnotify产生的file decriptor也会导致系统资源忙碌,使可移除设备无法被移除,徒增使用上的困扰。
由于dnotify只能让程序员监控目录层级的变化,“精细度”亦是“dnotify”的劣势之一。为此,程序员必须付出额外的心力,自行撰写代码以期追踪更细微的文件系统事件。
inotify相较之下使用较少的file descriptor,亦允许select()与poll()接口,优于dnotify使用的信号系统。这也使得inotify与既有以select()或poll()为基础之库(如:Glib)集成更加便利。
判断是否支持inotify
uname -r #看看内核是否到达了2.6.13或者以上,如果低于2.6.13就需要重新编译ll /proc/sys/fs/inotify/
安装inotify-tools
tar -xvf inotify-tools-3.14.tar.gzcd inotify-tools-3.14./configure --prefix=/usr/local/source/inotify-toolsmake & make install
安装完成后,在安装目录的bin目录下, 有两个可执行程序inotifywait和inotifywatch
inotifywait:用于等待文件或目录上的特定事件,可以监控任何一组文件或目录,或者是监控整个目录树(目录、子目录、子目录的子目录等)。在shell脚本中使用的是inotifywait。 inotifywatch:用于收集被监视的文件系统的统计数据,包括每个inotify事件发生多少次等信息
inotify监控事件
inotify 可以监视的文件系统事件包括:
access:文件被读取modify:文件被修改。attrib:文件属性被修改即元数据(Metadata),如执行chmod、chown、touch 等指令。close_write:具有可写权限的文件被关闭。文件内容不一定修改。close_nowrite:不可写文件被关闭,即只读文件被关闭。open:文件被打开moved_from:文件被移走。即文件从被监视的目录中移走。moved_to,文件被移来。即文件被移动到被监视的目录下。create:创建新文件delete:文件被删除,如rmdelete_self:自删除,即一个可执行文件在执行时删除自己,删除后,文件不会被监控。move_self:自移动。即一个可执行文件在执行时移动自己,移动后,该文件不会被监控。unmount:被监控的文件或目录所在的文件系统被 umount,此后不会被监控。close,文件被关闭,等同于(CLOSE_WRITE | CLOSE_NOWRITE)move:文件被移动,等同于move_to和move_from注:上面所说的文件也包括目录。
rsync inotify实时备份
inotify的脚本配置
#!/bin/bashINOTIFYWAIT="/usr/local/source/inotify-tools/bin/inotifywait"EVENTS="-e create,delete,move,modify,attrib"BACKUP="/backup/"SECRETS_FILE="/etc/rsync/rsync.pass"USER="felix"HOST="rsync.felix.com"MODULE="backup"$INOTIFYWAIT -mrq --timefmt '%F %T' --format '%T %w%f' $EVENTS $BACKUP | while read linedo rsync -vzrogpt --delete --progress --password-file=$SECRETS_FILE $BACKUP $USER@$HOST::$MODULE &> /dev/nulldone
创建/backup目录
[root@vm2 ~]# mkdir /backup[root@vm2 ~]# ls -l /backup/total 0[root@vm2 ~]#
说明:这里是将所有需要备份的内容放在/backup目录下面,在该目录下面的所有内容都会自动备份。
启动脚本
[root@vm2 ~]# sh /data/script/inotify.sh &
测试
[root@vm2 ~]# cp /etc/hosts .[root@vm2 ~]# ls -l
同一台机器上2个目录保存同步
#!/bin/bashINOTIFYWAIT="/usr/local/source/inotify-tools/bin/inotifywait"EVENTS="-e create,delete,move,modify,attrib"SOURCE="/dir1/"DEST="/dir2/"$INOTIFYWAIT -mrq --timefmt '%F %T' --format '%T %w%f' $EVENTS $SOURCE | while read linedo rsync -vzrogpt --delete --progress $SOURCE $DEST &> /dev/nulldone
创建测试目录
[root@vm2 script]# mkdir /dir1[root@vm2 script]# mkdir /dir2[root@vm2 script]#
启动脚本
sh /data/script/inotify_local_dir.sh &
测试
[root@vm2 ~]# ls -l /dir1 /dir2/dir1:total 0/dir2:total 0[root@vm2 ~]# cp /etc/hosts /dir1[root@vm2 ~]# ls -l /dir1 /dir2
- rsync+inotify
- rsync + inotify
- rsync+inotify
- inotify+rsync
- rsync+inotify
- ubuntu rsync inotify 配置
- rsync inotify 实时同步
- rsync+inotify实时同步
- rsync+ inotify实时同步
- rsync+inotify实现同步
- 部署inotify 结合rsync
- rsync+inotify配置
- Rsync+Inotify实时同步
- inotify+rsync安装配置
- inotify+rsync安装配置
- inotify+rsync安装配置
- rsync+inotify配置
- rsync+inotify实时同步
- 对于Tarjan强连通分量算法的理解
- NSObject头文件解析
- keepalived
- MySQL漂流记(六)
- 编程语言分类
- rsync+inotify
- 290. Word Pattern
- 点击按钮一次之后禁用按钮
- Huawei Suite无法在win10上使用问题解决
- lvs
- 移动端多指操作方法封装
- nginx
- Linux下获取进程PID并杀掉进程
- cocos2d-x 如何添加粒子效果