scp
verifica se copiou todos os dados enviados pela outra parte. A integridade da transferência é garantida pelo protocolo do canal criptográfico. Então você não precisa verificar a integridade após a transferência. Isso seria redundante e muito improvável de detectar qualquer erro de hardware, pois os dados comparados provavelmente seriam lidos do cache. Verificar os dados periodicamente pode ser útil, mas verificar imediatamente após a transferência é inútil.
No entanto, você precisa garantir que scp
não esteja dizendo que algo deu errado. Deve haver uma mensagem de erro, mas o indicador confiável é que scp
retorna um código de saída diferente de zero se algo deu errado.
Mais precisamente, você sabe que o arquivo foi transmitido corretamente se scp
retornar 0 (ou seja, o código de status de sucesso). Verificando se o status de saída é 0 é necessário quando você executa qualquer comando de qualquer maneira. Se scp
retornar um status de erro, ou se for morto por um sinal, ou se nunca morrer porque o sistema trava ou perde energia enquanto está em execução, você não tem garantias. Em particular, como scp
copia o arquivo diretamente para seu nome final, isso significa que você pode acabar com um arquivo parcial em caso de falha do sistema. A parte que foi copiada tem a garantia de estar correta, mas o arquivo pode estar truncado.
Para melhor confiabilidade, use rsync em vez de scp. A menos que seja instruído de outra forma, o rsync grava em um arquivo temporário e o move para o lugar quando ele é concluído. Assim, se o rsync retornar um código de sucesso, você sabe que o arquivo está presente e uma cópia completa e correta; Se o rsync não retornou um código de erro, nenhum arquivo estará presente (a menos que houvesse uma versão mais antiga do arquivo, caso em que a versão mais antiga não será modificada).