监视目录脚本帮助

监视目录脚本帮助

首先,我应该说明一下,我对编写脚本还很陌生,但是我对 ubuntu 很了解,所以我不介意亲自动手...

我有一个小脚本,它执行简单的目录监视,当它在目录中发现新文件时,将该文件复制到另一个目录。我使用的脚本如下所示:

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

虽然 [ 1 ]
  echo ‘监视目录:‘$WATCHED_DIR’,查找新文件’
  当文件=$(inotifywait-q-e创建“$WATCHED_DIR”--format“%f”)
    echo ‘要上传到 moonback 的新文件’ $file
    通知发送 -i“gtk-go-up”“完整文件夹监视器”“正在上传文件 $file”

    #rsync 到这里
    sudo rsync -av --omit-dir-times --delete --progress /home/sunmorgus/tempx/Complete/ /media/complete/

    notify-send -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

相关内容