A Scp não pode garantir que uma cópia seja feita corretamente. Nenhum software pode garantir que uma cópia ocorra corretamente. Existe sempre a possibilidade de a energia ou a rede ficarem inativas, ou um arquivo de origem ficar ilegível, ou o volume de destino ficar cheio, etc.
O máximo que um software de cópia de arquivos pode fazer é garantir que, quando sair, a cópia esteja correta ou o software relate um erro. A maneira confiável de verificar erros é verificar o status de retorno do processo: 0 para sucesso, qualquer outro valor para erro. Scp, como qualquer programa decente, retorna 0 em sucesso e um valor diferente de zero em caso de falha.
Seu script de espera não verifica o status de retorno de scp
, portanto você não tem como saber se o scp informou que a cópia foi bem-sucedida.
A expectativa não é uma ferramenta útil aqui. Você deve realmente usar a autenticação de chave pública . Se você realmente não puder configurar as chaves, use sshpass em vez de usar o seu próprio.
Além disso, você deve usar rsync em vez de scp. O rsync tem uma grande vantagem: se uma cópia for interrompida, você poderá executá-la novamente e ela ficará onde parou. Certifique-se de informá-lo para preservar os timestamps e também outros metadados, a menos que você tenha uma boa razão para não:
rsync -a SOURCE/ DESTINATION/