scp
підтверджує, що він скопіював усі дані, надіслані іншою стороною. Цілісність передачі гарантується протоколом криптографічного каналу. Тому вам не потрібно перевіряти цілісність після передачі. Це було б надлишком, і малоймовірно, що ви знайдете будь-яку апаратну помилку, оскільки дані, з якими порівнюєте, ймовірно, будуть прочитані з кеша. Періодична перевірка даних може бути корисною, але перевірити відразу після передачі безглуздо.
Однак вам потрібно переконатися, що scp
вам не скажуть, що щось пішло не так. Має бути повідомлення про помилку, але надійним показником є те, що scp
повертає ненульовий код виходу, якщо щось пішло не так.
Точніше, ви знаєте, що файл передано правильно, якщо scp
повертає 0 (тобто код статусу успіху). Перевірка того, що статус виходу 0 , необхідна, якщо ви все одно запустите будь-яку команду. Якщо scp
повертається стан помилки, або якщо він загинув сигналом, або якщо він ніколи не вмирає, оскільки система виходить з ладу або втрачає живлення під час роботи, то у вас немає гарантій. Зокрема, оскільки scp
копіюється файл безпосередньо до його остаточного імені, це означає, що ви можете отримати частковий файл у разі збоїв системи. Частина, яка була скопійована, гарантована як коректна, але файл може бути врізаний.
Для кращої надійності використовуйте rsync замість scp. Якщо не вказано інше, rsync записує у тимчасовий файл і переміщує його на місце після його закінчення. Таким чином, якщо rsync повертає код успіху, ви знаєте, що файл присутній і правильна, повна копія; якщо rsync не повернув код помилки, то жодного файлу не буде (якщо тільки не була старіша версія файлу; в цьому випадку старіша версія не буде змінена).
scp
супровідного повідомлення про помилку в stderr , воно скопіює все правильно та повністю.