scpverifica 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 scpnão esteja lhe dizendo que algo deu errado. Deve haver uma mensagem de erro, mas o indicador confiável é que scpretorna um código de saída diferente de zero se algo der errado.
Mais precisamente, você sabe que o arquivo foi transmitido corretamente se scpretornar 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 scpretornar 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 scpcopia 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).
scpe uma mensagem de erro associada ao stderr , ele terá copiado tudo corretamente e completamente.