前言 開發時習慣將所有項目將在統一文件夾下,運行目錄在其它目錄;如果每次修改後又copy到運行目錄就很蛋疼,於是找到了同步本地文件夾這個解決方法。監聽工作目錄的文件修改,同步到運行目錄。 思路 用inotify監控文件夾,如果文件夾內有文件變化則輸出變化情況 每當inotify檢測到文件變化時, ...
前言
開發時習慣將所有項目將在統一文件夾下,運行目錄在其它目錄;如果每次修改後又copy到運行目錄就很蛋疼,於是找到了同步本地文件夾這個解決方法。監聽工作目錄的文件修改,同步到運行目錄。
思路
- 用inotify監控文件夾,如果文件夾內有文件變化則輸出變化情況
- 每當inotify檢測到文件變化時,就調用unison,把當前文件夾的變化發給另一個文件夾
- 創建兩個進程分別進行單向同步,從而變成了雙向同步。
程式安裝
sudo apt install -y inotify-tools unison
單向同步
將下麵代碼保存為syncto.sh
#/bin/bash
# $1: from 工作文件夾
# $2: to 運行文件夾
unison -batch $1 $2
inotifywait -mrq -e create,delete,modify,move $1 | while read line; do
unison -batch $1 $2
done
運行
-
單向同步
- 運行
nohup syncto.sh 工作文件夾 運行文件夾 &
- 運行
-
雙向同步
-
將下麵代碼保存為
syncboth.sh
nohup syncto.sh $1 $2 & nohup syncto.sh $2 $1 &
-
運行
bash syncboth.sh 工作文件夾 運行文件夾
-
註意
工作文件夾、運行文件夾都必須使用絕對路徑。