Ayuda con el script de Watch Directory

Ayuda con el script de Watch Directory

Primero, debo señalar que soy bastante nuevo en la escritura de guiones, pero conozco bastante bien Ubuntu como para no me importa ensuciarme las manos...

Tengo un pequeño script que realiza una simple observación del directorio y cuando encuentra un nuevo archivo en el directorio, lo copia a otro directorio. El script que estoy usando se ve así:

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

mientras [ 1 ]
hacer
  echo 'Directorio de observación: '$WATCHED_DIR 'para archivos nuevos'
  mientras archivo=$(inotifywait -q -e crear "$WATCHED_DIR" --format "%f")
  hacer
    echo 'Nuevo archivo para cargar en moonback' $file
    notify-send -i "gtk-go-up" "Monitor de carpetas completo" "Subiendo archivo $file"

    #rsync va aquí
    sudo rsync -av --omit-dir-times --delete --progress /home/sunmorgus/tempx/Complete/ /media/complete/

    notify-send -i "gtk-home" "Monitor de carpeta completo" "Archivo cargado".
  hecho
hecho

Es una modificación de un script que encontré aquí:http://www.webupd8.org/2010/11/script-to-watch-folder-and-upload-new.html

Tengo algunas preguntas sobre el guión. En primer lugar... ¿es esta la mejor manera de hacer lo que estoy intentando hacer? Como dije, funciona bien, pero siempre estoy abierto a nuevas ideas. Nota: el directorio de destino es un recurso compartido SMB en una máquina con Windows 7.

Segundo... ¿cuál sería la mejor manera de ejecutar este script al inicio? En este momento, entré a la pantalla "Aplicaciones de inicio" y agregué un nuevo registro que ejecuta esta línea "gnome-terminal -e /script.sh" que funciona, pero no parece ideal. Intenté agregar el script a la carpeta init.d y ejecutar update-rc.d, y agregar el script a /etc/rc.local pero ninguno de los dos funcionó (no obtuve errores, pero el script no se ejecutó después de un reiniciar).

Por último... ¿hay alguna manera de modificar este script para que también se elimine del destino cuando se elimine del origen? El script solo se ejecuta cuando se agregan archivos, no se eliminan, y aunque la parte rsync se eliminará del destino cuando se elimine del origen, no lo hará hasta que se agregue un nuevo archivo. (ojalá ese párrafo tenga sentido).

Respuesta1

Para tus preguntas...

  1. Esto funcionará razonablemente bien. Si quieres ponerte elegante, mirafamilia.
  2. Agréguelo al final /etc/rc.localo cree scripts de inicio adecuados de acuerdo con el método estándar de su distribución.
  3. La --deleteopción rsyncya debería hacerlo.

Respuesta2

Yo haría algo como esto:

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

información relacionada