Основна відмінність цих інструментів полягає в тому, як вони копіюють файли.
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 кшатріїв в відповідь .