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...
- Esto funcionará razonablemente bien. Si quieres ponerte elegante, mirafamilia.
- Agréguelo al final
/etc/rc.local
o cree scripts de inicio adecuados de acuerdo con el método estándar de su distribución. - La
--delete
opciónrsync
ya 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