Подтвердить что ты не робот

Как `scp` отличается от` rsync`?

В статье о настройке блогов Ghost говорится, что для копирования с моего локального компьютера на удаленный сервер используется scp:

scp -r ghost-0.3 [email protected]*your-server-ip*:~/

Однако Railscast 339: Chef Solo Basics использует scp для копирования в обратном направлении (с удаленного сервера на локальный компьютер):

scp -r [email protected]:/var/chef .

В том же Railscast, когда автор хочет скопировать файлы на удаленный сервер (в том же направлении, что и в первом примере), он использует rsync:

rsync -r . [email protected]:/var/chef

Зачем использовать команду rsync если scp будет копировать в обоих направлениях? Чем scp отличается от rsync?

4b9b3361

Ответ 1

Основное отличие этих инструментов заключается в том, как они копируют файлы.

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 Kshatriya ответ.

Ответ 2

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

Используйте rsync -vP [email protected]:/path/to/file .

Параметр -P сохраняет частично загруженные файлы, а также показывает прогресс.

Как обычно, проверьте man rsync

Ответ 3

Разница ч/б scp и rsync по разным параметрам

1. Производительность за время ожидания

  • scp: scp относительно менее оптимизирован и ускорен

  • rsync: rsync сравнительно более оптимизирован и быстр

https://www.disk91.com/2014/technology/networks/compare-Performance-of-different-file-transfer-Protocol-over-latency/

2. Обработка прерываний

  • scp командной строки scp: scp не может возобновить прерванные загрузки из потерянных сетевых подключений

  • rsync: если сам вышеуказанный сеанс rsync прерывается, вы можете возобновить его столько раз, сколько захотите, набрав одну и ту же команду. rsync автоматически перезапустит передачу с того места, где он остановился.

http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html

3. Пример команды

УПП

$ scp source_file_path destination_file_path

Rsync

$ cd /path/to/directory/of/partially_downloaded_file
$ rsync -P --rsh=ssh [email protected]:bigdata.tgz ./bigdata.tgz 

Опция -P аналогична --Partial --Progress, что позволяет rsync работать с частично загруженными файлами. Опция --rsh=ssh указывает rsync использовать ssh в качестве удаленной оболочки.

4. Безопасность:

scp более безопасен. Вы должны использовать rsync --rsh=ssh чтобы сделать его таким же безопасным, как и scp.

человек документ, чтобы узнать больше:

performance chart

Ответ 4

Различие в том, что scp всегда зашифровывается с помощью ssh (защищенная оболочка), а rsync не обязательно зашифровывается. В частности, rsync не выполняет никакого шифрования; он все еще способен использовать другие механизмы (например, ssh) для выполнения шифрования.

В дополнение к безопасности шифрование также оказывает большое влияние на скорость вашего перевода, а также на накладные расходы процессора. (Мой опыт в том, что rsync может быть значительно быстрее, чем scp.)

Проверьте пост, если rsync имеет шифрование.

Ответ 5

Одна из основных особенностей rsync по scp (помимо дельта-алгоритма и шифрования, если используется w/ssh) заключается в том, что он автоматически проверяет, был ли переданный файл передан правильно. Scp не сделает этого, что иногда может привести к повреждению при передаче больших файлов. Так что в целом rsync это копия с гарантией.

См. Примечание к --checksum (centos) в конце описания опции --checksum:

Обратите внимание, что rsync всегда проверяет, что каждый переданный файл был правильно восстановлен на принимающей стороне, проверяя контрольную сумму всего файла, которая генерируется при передаче файла, но эта автоматическая проверка после передачи не имеет ничего общего с этими параметрами до того, как the-перевод "Нужно ли обновлять этот файл?" проверять.

Ответ 6

лучше думать в практическом контексте. В нашей команде мы используем rsync -aP для замены хоста bad cassandra в нашем кластере. Мы не можем сделать это с помощью scp (медленное и без сохранения прогресса).

Ответ 7

scp лучше всего подходит для одного файла.
ИЛИ сочетание tar и сжатия для небольших наборов данных, таких как деревья исходного кода с небольшими ресурсами (например, изображения, sqlite и т.д.).


Тем не менее, когда вы начинаете работать с большими объемами, говорите:
  • мультимедийные папки (40 ГБ)
  • резервные копии базы данных (28 ГБ)
  • mp3-библиотеки (100 ГБ)

На этом этапе нецелесообразно создавать файл zip/tar.gz для передачи с помощью scp до физических ограничений размещаемого сервера.

В качестве упражнения вы можете выполнить некоторые гимнастические упражнения, такие как передача tar в ssh и перенаправление результатов в удаленный файл. (избавляя от необходимости создавать своп или временный клон aka zip или tar.gz)

Тем не менее,

rsync упрощает этот процесс и позволяет передавать данные, не занимая дополнительного дискового пространства.

Кроме того,

Непрерывные (cron?) Обновления используют минимальные изменения по сравнению с полными клонированными копиями, что ускоряет перенос больших объемов данных с течением времени.

ТЛ; др
scp == small (с возможностью создания сжатых файлов на одном диске)
rsync == крупномасштабный (с необходимостью делать резервные копии больших данных и места не осталось)