Ajuda com o Script do Diretório de Observação

1

Primeiro, devo observar que sou muito novo em escrever scripts, mas conheço bem o Ubuntu e não me importo de sujar as mãos ...

Eu tenho um script pequeno, que faz um simples diretório assistir e quando ele encontra um novo arquivo no diretório, copia esse arquivo para outro diretório. O script que estou usando é assim:

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

while [ 1 ]
do
  echo 'Watching directory: '$WATCHED_DIR 'for new files'
  while file=$(inotifywait -q -e create "$WATCHED_DIR" --format "%f")
  do
    echo 'New file to upload to moonback' $file
    notify-send -i "gtk-go-up" "Complete Folder Monitor" "Uploading file $file"

    #rsync goes here
    sudo rsync -av --omit-dir-times --delete --progress /home/sunmorgus/tempx/Complete/ /media/complete/

    notify-send -i "gtk-home" "Complete Folder Monitor" "File uploaded."
  done
done

É uma modificação de um script que encontrei aqui: link

Eu tenho algumas perguntas sobre o roteiro. Primeiramente fora ... esta é a melhor maneira de fazer o que estou tentando fazer? Como eu disse, funciona bem, mas estou sempre aberto a novas idéias. Nota: o diretório de destino é um compartilhamento SMB em uma máquina com Windows 7.

Segundo ... qual seria a melhor maneira de executar este script na inicialização? Agora, eu fui para a tela "Startup Applications" e adicionei um novo registro que executa esta linha "gnome-terminal -e /script.sh" que funciona, mas não parece ideal. Eu tentei adicionar o script para a pasta init.d e executar update-rc.d, e adicionando o script para /etc/rc.local, mas nenhum deles funcionou (não recebi nenhum erro, mas o script não estava em execução depois de um reinicialização).

Por fim ... existe uma maneira de modificar este script para que também seja excluído do destino quando excluído da origem? O script só é executado quando os arquivos são adicionados, não excluídos, e enquanto a parte rsync será excluída do destino quando excluída da origem, ela não será feita até que um novo arquivo seja adicionado. (espero que esse parágrafo faça sentido).

    
por Nick DeMayo 29.07.2011 / 19:12

2 respostas

1

Para suas perguntas ...

  1. Isso funcionará razoavelmente bem. Se você quiser se interessar, procure em famd .
  2. Adicione ao final de /etc/rc.local ou crie scripts de inicialização apropriados de acordo com o método padrão da sua distribuição.
  3. A opção --delete para rsync já deveria fazer isso.
por 29.07.2011 / 19:22
1

Eu faria algo assim:

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
    
por 27.03.2017 / 22:31