Linux下Rsync+Inotify部署
来源:互联网 发布:网络推广师 编辑:程序博客网 时间:2024/06/15 21:44
- Inotify介绍
- Inotify-tools安装
- inotify监控事件
- inotifywait的常用参数
- rsync inotify实时备份
- 同一台机器上的两个目录保持同步
Inotify介绍
inotify是一种强大的、细粒度的、异步的文件系统监控机制,在Linux内核2.6.13以后的版本中增加了对inotify的支持,通过使用Inotify可以监控文件系统中的添加、删除、移动、修改等等各种细微的事件,利用这个内核接口,通过使用诸如inotify-tools的第三方软件就可以监控文件系统中文件的各种细微的变化情况,通过使用inotify对文件系统中的各种细微事件的监控,当发生变化时,触发rsync的同步,从而实现数据的实时备份。
Inotify-tools安装
由于inotify需要操作系统的内核达到2.6.13,因此可以使用uname –r查看操作系统的内核版本,如果内核版本低于2.6.13,需要对内核进行重新编译,加入inotify的功能。也可以使用如下方法判断,内核是否支持Inotify。
[root@vm2 ~]# uname -r2.6.32-431.el6.x86_64[root@vm2 ~]# [root@vm2 ~]# ls -l /proc/sys/fs/inotify/total 0-rw-r--r-- 1 root root 0 Jun 13 07:50 max_queued_events-rw-r--r-- 1 root root 0 Jun 13 07:50 max_user_instances-rw-r--r-- 1 root root 0 Jun 13 07:50 max_user_watches[root@vm2 ~]#
安装inotify-tools
[root@vm2 ~]# tar -zxvf inotify-tools-3.14.tar.gz [root@vm2 ~]# cd inotify-tools-3.14[root@vm2 inotify-tools-3.14]# ./configure --prefix=/usr/local/source/inotify-tools[root@vm2 inotify-tools-3.14]# make[root@vm2 inotify-tools-3.14]# make install
安装完成后,在安装目录的bin目录下, 有两个可执行程序inotifywait和inotifywatch。
[root@vm2 ~]# ls -l /usr/local/source/inotify-tools/bin/total 88-rwxr-xr-x 1 root root 44271 Jun 13 07:56 inotifywait-rwxr-xr-x 1 root root 41393 Jun 13 07:56 inotifywatch[root@vm2 ~]#
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注:上面所说的文件也包括目录。
inotifywait的常用参数
Inotifywait是一个监控等待事件,可以配合shell脚本使用它,下面是常用的一些参数:-m, 即--monitor,表示始终保持事件监听状态,持续监控,而非监控到就退出监控。-r, 即--recursive,表示递归查询目录。-q, 即--quiet,表示打印出监控事件。-e, 即--event,通过此参数可以指定要监控的事件,常用的事件有modify、delete、create、attrib等,如果省略,则监控所有的事件。--exclude:不监视某个目录或文件。--timefmt:指定时间格式,常用的为 '%y-%m-%d %H:%M',等价于'%F %T'--format:使用用户指定的格式输入,需要使用%T(使用tiemfmt指定的格式替换当前时间),常用的有:%w(被监视的文件所在的目录)和%f(被监视的文件的名称)因此在--timefmt和--format时,常用的格式如下:--timefmt '%F %T' --format ‘%T %w%f’
rsync inotify实时备份
rsync的配置参考另一篇博客:http://blog.csdn.net/xrwwuming/article/details/51648287
inotify的脚本配置
#!/bin/bash#Author: Felix#Date: 2016-06-13#Description: backup to rsync serverINOTIFYWAIT="/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 &[1] 3682[root@vm2 ~]#
测试
[root@vm2 backup]# cp /etc/hosts .[root@vm2 backup]# ls -ltotal 4-rw-r--r-- 1 root root 158 Jun 13 09:12 hosts[root@vm2 backup]# [root@vm1 backup]# ls -ltotal 4-rw-r--r-- 1 root root 158 Jun 13 09:12 hosts[root@vm1 backup]#
同一台机器上的两个目录保持同步
脚本配置
#!/bin/bash#Author: Felix#Date: 2015-11-19#Description: keep sync in local system directoryINOTIFYWAIT="/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/dir1:total 4-rw-r--r-- 1 root root 158 Jun 13 09:21 hosts/dir2:total 4-rw-r--r-- 1 root root 158 Jun 13 09:21 hosts[root@vm2 ~]# cp -a /root /dir1/[root@vm2 ~]# ls -l /dir1 /dir2/dir1:total 8-rw-r--r-- 1 root root 158 Jun 13 09:21 hostsdr-xr-x---. 6 root root 4096 Jun 13 09:20 root/dir2:total 8-rw-r--r-- 1 root root 158 Jun 13 09:21 hostsdr-xr-x--- 6 root root 4096 Jun 13 09:20 root[root@vm2 ~]#
- Linux下Rsync+Inotify部署
- 部署inotify 结合rsync
- Linux下Inotify + Rsync文件实时同步
- Linux下Rsync+Inotify 配置全解
- Linux 下 inotify+rsync 文件实时同步
- linux下rsync+inotify同步文件
- Linux下Rsync服务部署
- Linux下Rsync+Inotify-tools实现数据实时同步
- Linux下Rsync+Inotify-tools实现数据实时同步
- Linux下Rsync+Inotify-tools实现数据实时同步
- Linux下rsync设置+inotify设置文件同步
- Linux下Rsync+Inotify-tools实现数据实时同步
- Linux下Rsync+Inotify-tools实现数据实时同步
- Linux下Rsync+Inotify-tools实现数据实时同步
- Linux下Rsync+Inotify-tools实现数据实时同步
- 【惊雷】Linux下rsync+inotify的实时文件自动同步
- rsync+inotify
- rsync + inotify
- 面向对象(二)
- 图像的Gamma(伽玛)校正的原理及OpenCV代码实现!
- 开发人员常说的CLI是什么
- JFace TreeViewer使用 及内容提供器(IStructuredContentProvider)
- android2.3.4----1.ubuntu12.04 64位编译android2.3.4
- Linux下Rsync+Inotify部署
- Poj 3114 Countries in War【强连通Kosaraju+缩点染色+Floyd】
- android2.3.4----2.关于framebuffer
- iOS开发讲解SDWebImage,你真的会用吗?
- 经典算法题05-完全背包问题
- Basic Calculator
- 编写类String的构造函数、析构函数和赋值函数
- python爬取网站数据保存使用的方法
- RamDisk 内存虚拟硬盘,Windows 2008 R2,Win7 64位系统