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