В статье о настройке блогов Ghost говорится, что нужно использовать scp
для копирования с моего локального компьютера на удаленный сервер:
scp -r ghost-0.3 root@*your-server-ip*:~/
Однако Railscast 339: Chef Solo Basics использует scp
для копирования в обратном направлении (с удаленного сервера на локальный компьютер):
scp -r root@178.xxx.xxx.xxx:/var/chef .
В том же Railscast, когда автор хочет скопировать файлы на удаленный сервер (в том же направлении, что и в первом примере), он использует rsync
:
rsync -r . root@178.xxx.xxx.xxx:/var/chef
Зачем использовать rsync
команду, если scp
будет копировать в обоих направлениях? Чем scp
отличается от rsync
?
Ответы:
Основное различие между этими инструментами заключается в том, как они копируют файлы.
scp
в основном читает исходный файл и записывает его в место назначения. Он выполняет обычное линейное копирование, локально или по сети.rsync
также копирует файлы локально или по сети. Но он использует специальный алгоритм дельта-переноса и несколько оптимизаций, чтобы сделать операцию намного быстрее. Рассмотрим звонок.rsync
проверит размеры файлов и метки времени изменения как A, так и B , и пропустит любую дальнейшую обработку, если они совпадают.Если целевой файл B уже существует, алгоритм дельта-передачи обеспечит передачу только различий между A и B по проводам.
rsync
будет записывать данные во временный файл T , а затем замените файл назначения B с T , чтобы сделать обновление взгляд «атомным» для процессов , которые могли бы использовать B .Другое различие между ними касается вызова.
rsync
имеет множество параметров командной строки, что позволяет пользователю точно настроить его поведение. Он поддерживает сложные правила фильтрации, работает в пакетном режиме, в режиме демона и т. Д.scp
Имеет всего несколько переключателей.Таким образом, используйте
scp
для ваших повседневных задач. Команды, которые вы вводите время от времени в своей интерактивной оболочке. Его проще использовать, и в этих случаяхrsync
оптимизация не сильно поможет.Для повторяющихся задач, таких как
cron
задания, используйтеrsync
. Как уже упоминалось, при многократных вызовах будут использоваться преимущества уже переданных данных, которые выполняются очень быстро и экономят ресурсы. Это отличный инструмент для синхронизации двух каталогов по сети.Кроме того , при работе с большими файлами, использовать
rsync
с-P
опцией. Если передача прервана, вы можете возобновить ее с того места, где она была остановлена, повторно введя команду. Смотрите ответ Сид Кшатрия .источник
scp
что более вероятно, будет доступно в Unix-подобной системе, так что вы предотвращаете раздражающую «команду не найдена» время от времени.scp
иrsync
: поrsync -a
сравнениюscp -rp
с сохранением времени модификации и разрешений.rysnc может быть полезен для работы на медленных и ненадежных соединениях. Таким образом, если ваша загрузка прерывается в середине большого файла, rysnc сможет продолжить с того места, на котором остановился, при повторном вызове.
использование
rsync -vP username@host:/path/to/file .
Опция -P сохраняет частично загруженные файлы, а также показывает прогресс.
Как обычно проверить
man rsync
источник
Разница ч / б 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 не может возобновить прерванные загрузки из потерянных сетевых подключенийrsync
: Если указанный выше сеанс rsync прерван, вы можете возобновить его столько раз, сколько захотите, введя одну и ту же команду. rsync автоматически перезапустит передачу с того места, где он остановился.http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html
3. Пример команды
УПП
Rsync
-P
Вариант такого же , как--partial --progress
, что позволяет Rsync для работы с частично загруженными файлами.--rsh=ssh
Опция говорит Rsync для использования SSH в качестве удаленной оболочки.4. Безопасность:
scp более безопасен. Вы должны использовать его,
rsync --rsh=ssh
чтобы сделать его таким же безопасным, как scp.человек документ, чтобы узнать больше:
источник
The scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.
Одной из основных особенностей
rsync
overscp
(помимо дельта-алгоритма и шифрования, если используется w / ssh) является то, что он автоматически проверяет, был ли переданный файл передан правильно. Scp не сделает этого, что иногда может привести к повреждению при передаче больших файлов. Так что в целом rsync это копия с гарантией .Руководства Centos упоминают об этом в конце
--checksum
описания опции:источник
Для меня есть различие,
scp
которое всегда шифруется с помощью ssh (безопасная оболочка), хотяrsync
не обязательно шифруется. Более конкретно,rsync
не выполняет никакого шифрования само по себе; он все еще может использовать другие механизмы (например, ssh) для выполнения шифрования.В дополнение к безопасности, шифрование также оказывает большое влияние на скорость передачи данных и нагрузку на процессор. (Мой опыт показывает, что это
rsync
может быть значительно быстрее, чемscp
.)Проверьте этот пост, когда
rsync
шифрование включено.источник
scp лучше всего подходит для одного файла.
ИЛИ сочетание
tar
& сжатия для небольших наборов данных, таких как деревья исходного кода с небольшими ресурсами ( например, изображения, sqlite и т . Д. ).Тем не менее , когда вы начинаете работать с большими объемами, говорите:
На этом этапе нецелесообразно создавать файл zip / tar.gz для передачи с помощью scp в соответствии с физическими ограничениями размещаемого сервера.
В качестве упражнения, вы можете сделать некоторую гимнастику , как конвейер
tar
вssh
и перенаправлять результаты в удаленный файл. (избавляя от необходимости создавать своп или временный клон aka zip или tar.gz)Тем не менее ,
rsync упрощает этот процесс и позволяет передавать данные, не занимая дополнительного дискового пространства.
Кроме того ,
Непрерывные (cron?) Обновления используют минимальные изменения по сравнению с полными клонированными копиями, что ускоряет перенос больших объемов данных с течением времени.
tl; dr
scp
== мелкомасштабный (с возможностью создания сжатых файлов на одном диске)rsync
== крупномасштабный (с необходимостью делать резервные копии больших данных и места не остается)источник
лучше думать в практическом контексте. В нашей команде мы используем
rsync -aP
замену плохого хоста кассандры в нашем кластере. Мы не можем сделать это с помощью scp (медленно и без сохранения прогресса).источник