利用inotifywait监控文件变换
inotifywait是 inotify-tools
包中提供的一个东西,它利用 inotify
API 来监控文件/目次中的变换环境。
在archlinux上,我们可以利用下面呼吁来安装
sudo pacman -S --noconfirm inotify-tools
平时 inotifywait
会挂起在哪里,直到文件/目次产生了要引起存眷的事件后,它会退出并输失事件产生的场合、事件的名称以及引起事件的文件(当事件产生在目次上时才会输出).
inotifywait
最常用的选项有两个,一个是 -r
一个是 -e
,个中:
好比,我们运行
inotifywait -r -e modify,create,delete /tmp
暗示监控 /tmp
目次及其子目次中文件修改、文件建设和文件删除三种事件。
这时措施一直在挂起状态
[lujun9972@X61 ~]$ inotifywait -r -e modify,create,delete /tmp Setting up watches. Beware: since -r was given, this may take a while! Watches established.
这时在 /tmp
目次下新建一个文件
touch /tmp/newFile
则 inotifywait
历程退出,并输出如下信息
/tmp/ CREATE newFile
利用rsync同步变换
rsync是一款快速增量备份东西。它的具有以下几个特点使得它很适适用作做备份的东西:
rsync常用法为:
rsync -avz --delete src/ foo:/data
个中
/
不能去掉,不然会把src目次自己备份已往/data/
目次整合起来
接下来我们只需要用个 while
死轮回把两个东西整合起来就行了,昆山软件开发,昆山软件开发,很是简朴
#!/bin/bash if [[ $# -ne 2 ]];then cat<<EOF Usage $(basename $0) source_dir [host:]dest_dir EOF exit 0 fi source_dir=$1 dest_dir=$2 while : do inotifywait -r -e modify,create,delete ${source_dir} && rsync -avz ${source_dir}/ ${dest_dir} --delete done
这里有须要说明的是,固然用 inotifywait
能探测出文件详细做了什么窜改,但实际上我们基础不需要知道详细的改变是什么。
我们只需要知道有所改变了,然后详细改变了什么由 rsync
来本身处理惩罚就行了。