inotify所能监控的事件
INACCESS 被监控项目或者被监控目录中的条目被访问过。例如,一个打开的文件被读取。
IN_MODIFY 被监控项目或者被监控目录中的条目被修改过。例如,一个打开的文件被修改。
IN_ATTRIB 被监控项目或者被监控目录中条目的元数据被修改过。例如,时间戳或者许可被修改。
IN_CLOSE_WRITE 一个打开的,等待写入的文件或目录被关闭。
IN_CLOSE_NOWRITE 一个以只读方式打开的文件或目录被关闭。
IN_CLOSE 一个掩码,可以很便捷地对前面提到的两个关闭事件(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)进行逻辑操作。
IN_OPEN 文件或目录被打开。
IN_MOVED_FROM 被监控项目或者被监控目录中的条目被移出监控区域。该事件还包含一个 cookie 来实现 IN_MOVED_FROM 与 IN_MOVED_TO 的关联。
IN_MOVED_TO 文件或目录被移入监控区域。该事件包含一个针对 IN_MOVED_FROM 的 cookie。如果文件或目录只是被重命名,将能看到这两个事件,如果它只是被移入或移出非监控区域,将只能看到一个事件。如果移动或重命名一个被监控项目,监控将继续进行。参见下面的 IN_MOVE-SELF。
IN_MOVE 可以很便捷地对前面提到的两个移动事件(IN_MOVED_FROM | IN_MOVED_TO)进行逻辑操作的掩码。
IN_CREATE 在被监控目录中创建了子目录或文件。
IN_DELETE 被监控目录中有子目录或文件被删除。
IN_DELETE_SELF 被监控项目本身被删除。监控终止,并且将收到一个 IN_IGNORED 事件。
IN_MOVE_SELF 监控项目本身被移动。
inotify就是实时监控目录中文件的变化的工具 参数: -m持续监控 -r递归 -q静默,仅打印时间信息 —timefmt指定输出时间格式 — format 指定事件输出格式 %Xe事件 %w目录 %f文件 -e指定监控的事件 access访问 modify内容修改 attrib属性修改 close write 修改真实文件内容open打开 create创建 delete删除 umount卸载
uid = root
git = root
use chroot = no
max connection = 4
pid file = /var/run/rsyncd.pid
secrets file = /etc/rsyncd.pass
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[nginx_data]
path = /mysql/
comment = welcome to daqsoft nginx server !!
auth user = daqsoft
use chroot no
read only = no
hosts allow = 192.168.80.12/24
#!/bin/bash
DET="www"
RES="/root/wordpress"
IP="192.168.190.210"
AUTH_FILE="/etc/rsync.pwd"
USER="yyt"
cd $src
/usr/bin/inotifywait -mrq --format '%Xe %w%f' -e delete,create,move,delete,modify,attrib,close_write ./ | while read file
do
IN_FILE=`echo $file | awk '{print $2}' `
IN_EVENT=`echo $file | awk '{print $1}' `
echo "$IN_EVENT 和 $IN_FILE"
done
~
#!/bin/bash
SRC="/www/daqsoft/nginx/html/"
DES="nginx_data"
PWD="/etc/rsync.pwd"
DES_IP="192.168.12.201"
USER="daqsoft"
cd $SRC
/usr/bin/inotifywait -mrq --format '%Xe %w%f' -e create,delete,modify,close_write,attrib,move ./ | while read file
do
EVENT=`echo $file | awk '{print $1}' `
FILE_NAME=`echo $file | awk '{print $2}'`
#echo "$EVENT AND $FILE_NAME"
echo "-----------------`date '+%Z %F %T'`-------------------"
#echo $file
if [[ $EVENT =~ 'ATTRIB' ]] || [[ $EVENT =~ 'CREATE' ]] || [[ $EVENT =~ 'MODIFY' ]] || [[ $EVENT =~ 'CLOSE_WRITE' ]] || [[ $EVENT =~ 'MOVED_TO' ]] && [[ ! $FILE_NAME =~ .*\.sw[px]$ ]] && [[ ! $FILE_NAM
E =~ .*\~$ ]]
#判断事件类型
then
#rsync -avzcR --password-file=${PWD} $(dirname ${FILLE_NAME}) ${USER}@${DES_IP}::${DES}
rsync -avzcR --password-file=${PWD} $(dirname ${FILE_NAME}) ${USER}@${DES_IP}::${DES}
echo "这是${EVENT}事件 "
fi
if [[ $EVENT =~ 'DELETE' ]] || [[ $EVENT =~ 'MOVED_FROM' ]] && [[ ! $FILE_NAME =~ .*\.sw[px]$ ]] && [[ ! $FEIL_NAME =~ .*\~$ ]]
then
rsync -avzR --delete --password-file=${PWD} $(dirname ${FILE_NAME}) ${USER}@${DES_IP}::${DES}
echo "这是${EVENT}事件 "
fi
done
#!/bin/bash
CONF_DIR=/www/daqsoft/nginx/conf.d/
cd ${CONF_DIR}
/usr/bin/inotifywait -mrq --format '%Xe %w%f' -e delete,create,move,modify,attrib,close_write ./ | while read file
do
echo "-----------------`date '+%Z %F %T'`-------------------"
EVENT=`echo $file | awk '{print $1}' `
FILE_NAME=`echo $file | awk '{print $2}'`
if [[ ! $FILE_NAME =~ .*\.sw[px]$ ]] && [[ ! $FILE_NAME =~ .*\~$ ]] && [[ ! ${FILE_NAME##*/} =~ ^\..* ]]
then
if [[ $EVENT =~ 'CREATEXIDIR' ]] || [[ $EVENT =~ 'ATTRIBXISDIR' ]]
then
echo "change direcotry!"
continue
fi
docker restart nginx
else
echo "swap文件"
fi
done