Основное различие между этими инструментами заключается в том, как они копируют файлы.
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опцией. Если передача прервана, вы можете возобновить ее с того места, где она была остановлена, повторно введя команду. Смотрите ответ Сид Кшатрия .