scp
verifica se copiou todos os dados enviados pela outra parte. A integridade da transferência é garantida pelo protocolo de canal criptográfico. Portanto, você não precisa verificar a integridade após a transferência. Isso seria redundante e muito improvável que ocorra algum erro de hardware, pois os dados com os quais você está comparando provavelmente serão lidos no cache. Verificar dados periodicamente pode ser útil, mas verificar imediatamente após a transferência não faz sentido.
No entanto, você precisa garantir que isso scp
não esteja lhe 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 der errado.
Mais precisamente, você sabe que o arquivo foi transmitido corretamente se scp
retornar 0 (ou seja, o código de status de sucesso). Verificar se o status de saída é 0 é necessário quando você executa qualquer comando. Se scp
retornar um status de erro, ou se ele 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 no caso de uma falha no sistema. A parte que foi copiada é garantida como correta, mas o arquivo pode estar truncado.
Para melhor confiabilidade, use rsync em vez de scp. A menos que instruído de outra forma, o rsync grava em um arquivo temporário e o move para o lugar quando terminar. Portanto, se o rsync retornar um código de sucesso, você saberá que o arquivo está presente e uma cópia correta e completa; se o rsync não tiver retornado um código de erro, nenhum arquivo estará presente (a menos que haja uma versão mais antiga do arquivo; nesse caso, essa versão mais antiga não será modificada).
scp
e uma mensagem de erro associada ao stderr , ele terá copiado tudo corretamente e completamente.