scp
проверяет, что он скопировал все данные, отправленные другой стороной. Целостность передачи гарантируется протоколом криптографического канала. Таким образом, вам не нужно проверять целостность после передачи. Это было бы избыточно, и очень маловероятно, что вы обнаружите какую-либо аппаратную ошибку, поскольку сравниваемые данные, вероятно, будут считываться из кеша. Периодическая проверка данных может быть полезной, но проверка сразу после передачи бессмысленна.
Однако вы должны убедиться, что scp
это не говорит о том, что что-то пошло не так. Должно быть сообщение об ошибке, но надежный индикатор - scp
возвращает ненулевой код выхода, если что-то пошло не так.
Точнее, вы знаете, что файл был передан правильно, если scp
возвращает 0 (т. Е. Код состояния успеха). Проверка того, что статус выхода равен 0 , необходима, когда вы все равно запускаете какую-либо команду. Если scp
возвращается статус ошибки, или если он был убит сигналом, или если он никогда не умирает, потому что система падает или теряет питание во время работы, то у вас нет никаких гарантий. В частности, поскольку scp
файл копируется непосредственно в его окончательное имя, это означает, что в случае сбоя системы вы можете получить неполный файл. Скопированная часть гарантированно будет правильной, но файл может быть обрезан.
Для большей надежности используйте rsync вместо scp. Если не указано иное, rsync записывает во временный файл и перемещает его на место после его завершения. Таким образом, если rsync возвращает код успеха, вы знаете, что файл присутствует и правильная полная копия; если rsync не вернул код ошибки, файл не будет представлен (если только не существовала более старая версия файла, в этом случае более старая версия не будет изменена).
scp
и сопроводительное сообщение об ошибке в stderr , он скопирует все правильно и полностью.