Основна відмінність цих інструментів полягає в тому, як вони копіюють файли.
scpв основному читає вихідний файл і записує його до місця призначення. Він виконує звичайну лінійну копію, локально або через мережу.
rsyncтакож копіює файли локально або через мережу. Але тут використовується спеціальний алгоритм передачі дельти та кілька оптимізацій, щоб зробити операцію набагато швидшою. Розгляньте дзвінок.
rsync A host:B
rsyncперевірять розміри файлів та часові позначки модифікацій як A, так і B та пропускають будь-яку подальшу обробку, якщо вони відповідають.
Якщо файл призначення B вже існує, алгоритм передачі дельти переконається, що по проводу надсилаються лише відмінності між A і B.
rsyncзаписуватиме дані в тимчасовий файл T , а потім замініть файл призначення B з T , щоб зробити оновлення погляд «атомним» для процесів , які могли б використовувати B .
Ще одна різниця між ними стосується виклику. rsyncмає безліч параметрів командного рядка, що дозволяє користувачеві точно налаштувати свою поведінку. Він підтримує складні правила фільтра, працює в пакетному режимі, демон-режимі тощо, scpмає лише кілька комутаторів.
Підсумовуючи це, використовуйте scpдля щоденних завдань. Команди, які ви вводите раз у раз на інтерактивній оболонці. Це простіше у використанні, і в таких випадках rsyncоптимізація не дуже допоможе.
Для повторюваних завдань, як-от cronроботи, використовуйте rsync. Як зазначалося, при декількох викликах він скористається вже переданими даними, виконуючи дуже швидко та економлячи на ресурсах. Це відмінний інструмент для синхронізації двох каталогів по мережі.
Крім того , при роботі з великими файлами, використовувати rsyncз -Pопцією. Якщо передача перервана, ви можете відновити її там, де вона зупинилася, перезапустивши команду. Див Sid кшатріїв в відповідь .