監視目錄腳本幫助

監視目錄腳本幫助

首先,我應該指出,我對編寫腳本還很陌生,但我對 ubuntu 非常了解,所以我不介意弄髒我的手...

我有一個小腳本,它執行簡單的目錄監視,當它在目錄中找到新檔案時,將該檔案複製到另一個目錄。我正在使用的腳本如下所示:

#!/bin/sh
#
sudo rsync -av --omit-dir-times --delete --progress /home/sunmorgus/tempx/Complete/ /media/complete/

而[1]
  echo '監視目錄:'$WATCHED_DIR '新檔案'
  while file=$(inotifywait -q -e create "$WATCHED_DIR" --format "%f")
    echo '要上傳到 Moonback 的新檔案' $file
    notification-send -i "gtk-go-up" "完整資料夾監視器" "上傳檔案 $file"

    #rsync 放在這裡
    sudo rsync -av --omit-dir-times --delete --progress /home/sunmorgus/tempx/Complete/ /media/complete/

    通知發送-i“gtk-home”“完整資料夾監視器”“文件已上傳。”
  完畢
完畢

這是我在這裡找到的腳本的修改:http://www.webupd8.org/2010/11/script-to-watch-folder-and-upload-new.html

我對劇本有幾個疑問。首先......這是做我想做的事情的最佳方法嗎?就像我說的,它工作得很好,但我總是樂於接受新想法。注意:目標目錄是 Windows 7 電腦上的 SMB 共用。

其次......在啟動時運行此腳本的最佳方法是什麼?現在,我進入“啟動應用程式”畫面並添加了一條運行此行“gnome-terminal -e /script.sh”的新記錄,該記錄可以工作,但似乎並不理想。我嘗試將腳本新增至 init.d 資料夾並執行 update-rc.d,並將腳本新增至 /etc/rc.local,但這些都不起作用(我沒有錯誤,但腳本正在重新啟動)。

最後......有沒有辦法修改這個腳本,以便從來源刪除時它也從目標中刪除?該腳本僅在新增檔案時執行,而不是在刪除檔案時執行,雖然 rsync 部分會在從來源刪除時從目標中刪除,但在新增檔案之前不會執行此操作。 (希望段落有意義)。

答案1

對於您的問題...

  1. 這會工作得相當好。如果你想變得花哨,看看法姆德
  2. 將其添加到末尾/etc/rc.local或根據發行版的標準方法建立適當的初始化腳本。
  3. 選項--delete應該rsync已經這樣做了。

答案2

我會做這樣的事情:

cd directory2watch
# watching SUBdirectories
inotifywait --monitor --recursive *|
        while read path action file
        do
                # To get an idea of possible actions that will be
                # reported:
                echo path=$path action=$action file=$file
                # Decide on a followup base on $action:
                case $action in
                  "DELETE") ...
                          ;;
                  "CLOSE_WRITE,CLOSE")
                          ...
                          ;;
                esac

        done

相關內容