Есть ли причина использовать scp вместо rsync?


62

Есть ли причина использовать scpвместо rsync? Я не вижу причин для использования scpкогда-либо снова, rsyncделает все, что scpделает, с большей безопасностью (может сохранить символические ссылки и т. Д.).


6
Краткий ответ: нет. Scp никогда не вреден.
Шадур

2
@Shadur scp вреден тем, что по умолчанию перезаписывает существующие целевые файлы. Так что Rsync, но это по крайней мере позволяет ограничить возможный ущерб с -u.
Жиль "ТАК ... перестать быть злым"

3
@ Жиль Как и любой инструмент, вы должны понимать, что он делает, и как он это делает, чтобы использовать его безопасно.
Алекс Чемберлен

8
В этом контексте обычное cpи rmбудет считаться «вредным» - и если вы определите «вредным» как «может меня подставить, если я сделаю что-то глупое», rsyncэто не менее вредно.
Шадур

1
В системах без rsyncустановки использование rsync(очевидно) даже невозможно.
Кусалананда

Ответы:


46

scp предоставляет cp-подобный метод для копирования файлов с одного компьютера на удаленный компьютер через безопасное соединение SSH.

rsync позволяет синхронизировать удаленные папки.

Это разные программы, и обе имеют свое применение. scp всегда безопасен, тогда как rsync должен проходить через SSH, чтобы быть безопасным.


9
Кроме того, я уверен, что rsync должен быть установлен на другом конце.
чхан

3
@ckhan, нет, он не может копировать без установки чего-либо на другой стороне, это будет менее эффективно.
Майклблок

2
Мне нравится простота scp.
Алекс Чемберлен

2
@mikebloch Как ты это делаешь? Это новая функция? Только что попробовал, используя версию 3.0.9. и жаловался, что не может найти rsyncна пульте.
Алексиос

1
@mikebloch, он должен быть установлен на сервере, чтобы выполнять вычисления контрольной суммы, которые могут добавить большую нагрузку процессора на сервер. Вот почему большинство крупных сайтов не поддерживают его, и поэтому zsyncбыл создан в качестве альтернативы.
psusi

19

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

Я использую scp, если хочу передать один или несколько файлов или каталогов. Я иду на rsync для данных размером в несколько ГБ.


3
Стоит добавить, что этот --partialфлаг полезен при передаче больших файлов. rsyncбудет выбирать, где он остановился в файле, а не запускать этот файл снова.
Флюп

Как уже упоминалось в @Flup, rsync не оставит файл для передачи для возобновления, если вы не используете опцию --partial. Эти файлы по умолчанию скрыты в целевом каталоге. Вы можете использовать --partial-dir, чтобы поместить все эти файлы в один каталог.
Лестер Чеунг

Ну, rsync -vP username@host:/path/to/file .сделаем это тоже. См. Этот ответ на Stackoverflow
Девеш Сайни

9

rsync : передает дельты (используя его алгоритм Delta Transfer ) между:

  1. локальные и удаленные хосты

scp : передает целые файлы между:

  1. локальные и удаленные хосты
  2. удаленные и удаленные хосты

Резюме: scpможет передавать файлы между двумя удаленными хостами, пока rsyncне поддерживает это.


rsync может передавать файлы между двумя удаленными хостами. На самом деле, rsync a host:bэквивалентно scp a host:b.
Brandizzi

Это то, что я написал, rsync может передавать дельты между локальными и удаленными хостами, но scp не ограничивается этим, он может передавать дельты между двумя удаленными хостами. @brandizzi
Девеш Саини

2

Пользователь Chris на Webhosting Talk пишет:

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


0

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


1
Хм, а почему так? rsync a host:bэквивалентно тому scp a host:bже числу аргументов.
mikebloch

1
@mikebloch Еще две буквы для ввода ... ;-) В прошлом мне приходилось указывать "-e ssh -a", чтобы получить правильный результат. Теперь, когда «-e ssh» используется по умолчанию, это может быть другая игра.
Нильс

0

Кредиты @tomrunia на https://gist.github.com/KartikTalwar/4393116

rsync -aHAXxv --numeric-ids --delete --progress \
  -e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" \
  [source_directory] user@hostname:[target_directory]/

Обратите внимание --delete, не используйте его, если хотите сохранить посторонние файлы в директории dest dirs

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.