inotify rsync 問題請教
aaa目錄如果有文件變化則同步增加到ccc目錄
bbb目錄如果有文件變化則同步增加到ccc目錄
ccc目錄整個同步到另一台伺服器上
單獨運行rsync的三條命令 是正常的
將腳本在後台運行后 只有aaa目錄同步增加到ccc目錄是正常的 其餘兩個不正常 懷疑是while done語句不對 請大神指點
#!/bin/bash
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib /data/aaa | while read files
do
/usr/bin/rsync -vzrtopgu /data/aaa /data/ccc >/dev/null 2>&1
echo "${files} was rsynced" >> /var/log/rsync.log 2>&1
done
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib /data/bbb | while read files
do
/usr/bin/rsync -vzrtopgu /data/bbb/ /data/ccc/ >/dev/null 2>&1
echo "${files} was rsynced" >> /var/log/rsync.log 2>&1
done
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib /data/ccc | while read files
do
/usr/bin/rsync -vzrt --delete --port=5873 --password-file=/etc/rsync.pas /data/ccc rsyncuser@11.11.11.11::image
echo "${files} was rsynced" >> /var/log/rsync.log 2>&1
done
《解決方案》
回復 1# ding_cw
shell腳本中是一行一行執行命令的,
inotifywait 的-m 參數是一直監視不退出, 就是說,這裡等於是個死循環, 腳本後面的代碼根本沒機會運行。
《解決方案》
回復 2# 關陰月飛
那我應該怎樣才能實現同時監視3個文件夾的狀態呢 分別寫3個腳本還是使用別的參數?
《解決方案》
回復 3# ding_cw
可以將前面的兩個循環放到後台執行,不過最好是分開三個腳本,互不干涉。