Почему rsync -avz быстрее, чем scp -r?

55

Я немного озадачен этим? Почему rsync быстрее, чем scp? Разве rsync не использует scp или делает что-то более эффективное? Есть ли способ ускорить scp?

грм
источник
1
Это свежая копия.
грм

Ответы:

68

Rsync, очевидно, будет быстрее, чем scp, если цель уже содержит некоторые исходные файлы, поскольку rsync только копирует различия. Но я подозреваю, что ваш вопрос касался создания прямой копии для пустой цели.

Вы передали -zопцию rsync; это включает сжатие. Если пропускная способность сети является ограничивающим фактором (часто это так), сжатие может значительно увеличить скорость передачи.

Вы также можете включить сжатие с scpпомощью -Cопции. Это должно о вещах с rsync. Сжатие не включено по умолчанию в ssh, поскольку оно экономит полосу пропускания, но добавляет задержку и нагрузку на процессор; Задержка плоха для интерактивных сеансов (это не относится к scp), а загрузка ЦП бесполезна, если копируемые файлы уже сжаты.

Более старые версии rsyncиспользовали rsh, а не ssh в качестве транспортного уровня по умолчанию, поэтому справедливое сравнение будет между rsyncи rcp. Но ssh используется по умолчанию с версии 2.6.0, выпущенной 2004-01-01.

С одинаковыми настройками сжатия, я ожидаю, rsyncи scpбудет иметь практически одинаковую скорость. Пожалуйста, поделитесь ориентирами, если вы обнаружите иное.

Жиль "ТАК - перестань быть злым"
источник
3
Nice, используя -C сделал мою скорость передачи увеличилась с 5 МБ до 20 МБ
ıɾuǝʞ
Я только что проверил это для каталога, содержащего 16 файлов размером около 3-9 МБ и rsync -zвсе еще ПУТЬ быстрее, чем scpс любым сжатием, предложенным в этих ответах. Это также быстрее, чем сжимать и архивировать в один файл вручную и scpзагружать этот файл ( scpпри этом сжатие происходит даже медленнее). Таким образом, вопрос об ОП фактически остается без ответа: scpчем медленнее, чем rsync?
ohcibi
12

попробуйте scp по-быстрому

scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput'  -c arcfour machine:file .

эти параметры ускоряют scp в 5 раз по сравнению с обычным scp machine: file.

Обновление 2017

На самом деле scp работает медленно из-за плохого управления деталями TCP, такими как MTU и размер буфера. К счастью, это было исправлено в проекте HPN SSH . Насколько я понимаю, вы можете использовать HPN SSH в качестве транспорта для rsync.

Питер К
источник
1
Круто, спасибо !! Однако всегда всегда делайте scp -p(сохраняйте дату / время) по умолчанию, и, вероятно, -r(рекурсивно) так scp -pr -C .... (Я просто должен был очистить и перезапустить 40Gb scp, используя их, потому что я забыл -p)
smci
Я добавил -p к команде, спасибо за подсказку.
Питер К
4

Раньше все было наоборот, но я считаю, что скорость rsync значительно улучшилась за последние несколько ревизий. Это также зависит от того, сколько файлов вы копируете. Если это много, rsync обычно будет быстрее, потому что scp запускает новый процесс для каждого файла, который вы копируете. Вы можете попробовать ослабить шифр, который использует scp, чтобы увидеть, ускоряется ли он. Последнее, что я помню, шифр arcfour был самым быстрым.

churnd
источник
2
Scp фактически не порождает новый процесс для каждого копируемого файла. У вас есть один процесс на отправляющей стороне и один на принимающей стороне, как и в rsync.
Кенстер
3

Для большого количества маленьких файлов rysnc намного быстрее, чем scp. Они говорят, что это потому, что у него меньше накладных расходов. Для одного большого файла я бы ожидал аналогичных результатов.

Sencer
источник
3

Для моего тестирования rsync работает быстрее, чем scp , вы можете использовать iotop для проверки их при передаче одного и того же файла:

sudo iotop -o

Может быть, вы получите другой результат, но вы можете проверить их сами. Кстати, при использовании scp не забудьте выбрать его шифр:

scp -c arcfour <source> <dest>

Хотя arcfourможет ускорить шифрование.

coanor
источник
0

Вы повторно копируете файлы поверх существующих? Если это так, способность rsync блокировать сравнение и копировать только различия будет иметь значение.

Linker3000
источник