Linux下面能够使用http://linux.die.net/man/1/inotifywatch (inotify-tools包)来进行文件夹、文件变动的检测html
fswatch是一个使用Mac OS X FSEvents API的同步工具,同时也能够使用在BSD 与Debian操做系统 Mac FSEvent Api Doclinux
安装:git
# MacPorts $ port install fswatch # Homebrew $ brew install fswatch
命令行使用:
直接执行命令github
fswatch ~/Downloads/a/
便可监控 ~/Downloads/a/,当文件内容变化时,输出变更的文件列表bash
简单的bash使用,fswatch监听变更后,执行rsync语句hexo
#!/bin/bash fswatch /Users/kint/Downloads/a | while read file do echo "${file} was changed start sync..." rsync -avzrp /Users/kint/Downloads/a/ /Users/kint/Downloads/b done }
以上脚本能够正常执行,可是有个BUG,就是在同步过程当中,若是删除或者添加了一个文件夹,里面有上百个文件,那么就会致使do...done会执行上百次。因此不能改变一个文件就同步一次app
#!/bin/bash function start_moniting() { #确保在上次经过过程当中改变文件可以同步 sync_files echo "start morniting folder......" fswatch -1 /Users/kint/Downloads/a # 5秒后执行同步 sleep 5 sync_files } function sync_files() { echo "start sync_files" rsync -avzrp /Users/kint/Downloads/a /Users/kint/Downloads/b #开始检测 start_moniting } sync_files
以上脚本比较适合用于Blog更新上传,在本地经过hexo等生成静态博客发布到github pages。ide