Movendo arquivos com scripts bash

5

Eu tenho um script bash que assiste a uma pasta, se algo for adicionado à pasta, o script moverá todo o conteúdo dentro da pasta monitorada para o destino definido.

O PROBLEMA:              - O script não consegue mover os arquivos na pasta monitorada para a pasta de destino através do FileZilla (FTP). O script funciona se você mover o arquivo para a pasta monitorada manualmente através de um prompt de shell. FTP é o único formato que não está funcionando corretamente.

Alguma idéia de qual é o problema?

Aqui está o script:

inotifywait -m ~/folderA/fileA -e moved_to |
    while read path action file; do
        #echo "The file '$file' appeared in directory '$path' via '$action'"
        # do something with the file
    mv ~/folderA/fileA/* "/folderB/myNewDest"
    done
    
por JakePember 31.01.2016 / 20:31

1 resposta

6

Primeiro, fazendo com que o inotifywait -e moved_to monitore apenas os arquivos movidos para o diretório de destino, você omite o monitoramento de arquivos que foram escritos ou substituídos por, por exemplo, Filezilla . Adicione -e modify -e create ao seu comando ou, a menos que você tenha uma razão convincente para ignorar alguns inotifywait events, descarte todas as opções -e whatever .

Segundo, ao não citar os arquivos do seu comando mv ~/folderA/fileA/* "/folderB/myNewDest" , você corre o risco de ser pego por nomes de arquivos bobos, por exemplo, %código%. Eu sugeriria

find ~/folderA/fileA/ -maxdepth 0 -type f -print0 | \
xargs -0 mv --target-directory=/folderB/myNewDest --

que faz a mesma coisa, mas com mais segurança.

    
por waltinator 31.01.2016 / 21:49