Чи є коли-небудь причина використовувати scp замість rsync?


61

Чи є причина використовувати scpзамість rsync? Я не бачу жодної причини використовувати scpколи-небудь знову, rsyncробить усе, що scpробить, з більшою безпекою (може зберегти символьні посилання тощо).


6
Коротка відповідь: Ні. Scp ніколи не шкідлива.
Шадур

2
@Shadur scp шкідливий тим, що за замовчуванням він перезаписує наявні цільові файли. Так є rsync, але він принаймні дозволяє обмежити можливий збиток за допомогою -u.
Жиль

3
@Gilles Як і будь-який інструмент, ви повинні зрозуміти, що він робить і як це робити, щоб безпечно ним користуватися.
Алекс Чемберлен

8
У цьому контексті регулярні cpі rmвважатимуться "шкідливими" - і якщо ви визначите "шкідливий" як ", можна накрутити мене, якщо я роблю щось дурне", rsyncне менш шкідливий.
Шадур

1
У системах без rsyncвстановлення використання rsync(очевидно) навіть неможливо.
Kusalananda

Відповіді:


45

scp надає метод, подібний cp, для копіювання файлів з однієї машини на віддалену машину через захищене SSH-з'єднання.

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

Вони різні програми і обидва мають своє використання. scp завжди захищений, тоді як rsync повинен подорожувати через SSH, щоб бути безпечним.


9
Крім того, досить впевнений, що rsync має бути встановлений на іншому кінці.
ckhan

3
@ckhan, ні він не може скопіювати, не встановивши нічого з іншого боку, це буде просто менш ефективно.
mikebloch

2
Мені подобається простота scp.
Алекс Чемберлен

2
@mikebloch Як це зробити? Це нова функція? Щойно спробував це, використовуючи версію 3.0.9. і він скаржився, що не може знайти його rsyncна пульті.
Олексій

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

19

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

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


3
Можливо, варто додати, що --partialпрапор корисний при передачі великих файлів. rsyncвибере місце, де воно залишилось у файлі, а не запускати його знову.
Flup

Як згадував @Flup, rsync не залишить жодного файлу під час транзиту, якщо ви не зможете відновити його, якщо не скористаєтесь опцією --partial. Ці файли за замовчуванням приховані в цільовому каталозі. Ви можете використовувати --partial-dir, щоб розмістити всі ці файли в одному каталозі.
Лестер Чеун

Ну, rsync -vP username@host:/path/to/file .зробимо це теж. Дивіться цей відповідь на Stackoverflow
Devesh SAINI

9

rsync : дельти переносу (використовуючи його алгоритм передачі Delta ) між:

  1. місцеві та віддалені хости

scp : Переносить цілі файли між:

  1. місцеві та віддалені хости
  2. віддалені та віддалені хости

Підсумок: scpможе передавати файли між двома віддаленими хостами, але rsyncвін не підтримує.


rsync може передавати файли між двома віддаленими хостами. Насправді rsync a host:bце рівнозначно scp a host:b.
брандізі

Ось що я написав, rsync може передавати дельти між локальними та віддаленими хостами, але scp не обмежується лише цим, він може передавати дельти між двома віддаленими хостами. @brandizzi
Devesh Saini

2

Користувач Кріс в 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.