Como posso modificar este script inotifywait para fazer upload de qualquer arquivo de qualquer diretório?

1

Como posso modificar este script inotifywait para fazer upload de qualquer arquivo de qualquer diretório?

Estou trabalhando em um script baseado em inotifywait , que deve verificar a criação de arquivos e alterações recursivamente em um diretório e carregar os arquivos modificados no Dropbox usando dropbox-uploader.sh (observe neste ambiente que o aplicativo Dropbox normal não está funcionando é por isso que eu uso o script).

inotifywait -m -r -q -e modify,create --format '%f' ~/Dropbox-Uploader/name-of-folder |
 while read FILE; do   /home/user/Dropbox-Uploader/dropbox_uploader.sh \
 upload ~/Dropbox-Uploader/name-of-folder/$FILE /name-of-folder/$FILE; date; done

O problema é que o script só carrega arquivos que estão na pasta ( name-of-folder ) acima, mas não carregará arquivos que foram alterados em subpastas.

Alguém sabe como consertar isso?

    
por Vesa 09.01.2018 / 01:49

1 resposta

1

  • --format '%f' não é suficiente, fornece apenas nomes de arquivos (como basename ). Use --format '%w%f' para obter caminhos completos (er).
  • Se você der ~/Dropbox-Uploader/name-of-folder como um argumento para inotifywait , esses caminhos começarão com ~/Dropbox-Uploader/name-of-folder/ e isso tornará sua invocação dropbox_uploader.sh um pouco difícil, onde você especifica (eu suponho) o caminho de destino. Considere cd e, em seguida, ./ como um argumento para inotifywait .
  • Citar variáveis (por exemplo, "/name-of-folder/$FILE" ), caso contrário, um espaço em qualquer caminho irá surpreendê-lo.

Eu não uso o Dropbox, portanto não posso depurar isso de verdade.

cd ~/Dropbox-Uploader/name-of-folder &&
inotifywait -m -r -q -e modify,create --format '%w%f' ./ |
 while read FILE; do /home/user/Dropbox-Uploader/dropbox_uploader.sh \
 upload "$FILE" "/name-of-folder/$FILE"; date; done
    
por 09.01.2018 / 02:17