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