O comando ftp não tem funcionalidade para permitir a verificação da transferência bem-sucedida. Se você precisar continuar usando essa implementação de transferência por FTP, duas alternativas são:
- Faça o download do arquivo transmitido para um local temporário e compare-o por byte com a origem.
- Execute
lsno cliente FTP e verifique se o tamanho do arquivo corresponde às expectativas. Tenha em mente quelsdepende do servidor e pode variar da implementação do servidor à implementação.
A melhor solução (além de substituir o FTP inteiramente por rsync ou scp ) é usar um cliente FTP diferente que forneça um status de transferência confiável.
#!/bin/bash
tar czf <sourcefile> --directory=<directory> log
lftp -u '<user>,<password>' -e 'put -E <source> -o <target>; quit' "$1"
O comando lftp deve estar disponível na maioria das distribuições Linux. O -E flag configura o comando put para agir mais como mv em vez de cp : ele exclui o arquivo de origem após uma transferência bem-sucedida.