scp
verifica que copió todos los datos enviados por la otra parte. La integridad de la transferencia está garantizada por el protocolo de canal criptográfico. Por lo tanto, no necesita verificar la integridad después de la transferencia. Eso sería redundante y es muy poco probable que detecte algún error de hardware, ya que los datos con los que se compara probablemente se leerán de la memoria caché. Verificar datos periódicamente puede ser útil, pero verificar inmediatamente después de la transferencia no tiene sentido.
Sin embargo, debe asegurarse de que eso scp
no le indique que algo salió mal. Debería haber un mensaje de error, pero el indicador confiable es que scp
devuelve un código de salida distinto de cero si algo salió mal.
Más precisamente, sabe que el archivo se transmitió correctamente si scp
devuelve 0 (es decir, el código de estado de éxito). Es necesario verificar que el estado de salida es 0 cuando ejecuta cualquier comando de todos modos. Si scp
devuelve un estado de error, o si una señal lo mata, o si nunca muere porque el sistema se bloquea o pierde energía mientras está en funcionamiento, entonces no tiene garantías. En particular, dado que scp
copia el archivo directamente a su nombre final, esto significa que puede terminar con un archivo parcial en caso de un bloqueo del sistema. Se garantiza que la parte que se copió es correcta, pero el archivo puede truncarse.
Para una mejor confiabilidad, use rsync en lugar de scp. A menos que se indique lo contrario, rsync escribe en un archivo temporal y lo coloca en su lugar una vez que ha terminado. Por lo tanto, si rsync devuelve un código de éxito, sabrá que el archivo está presente y una copia completa correcta; Si rsync no ha devuelto un código de error, no habrá ningún archivo presente (a menos que haya una versión anterior del archivo, en cuyo caso esa versión anterior no se modificará).
scp
y un mensaje de error adjunto a stderr , habrá copiado todo de manera correcta y completa.