Both ship with OpenSSH on virtually every Linux distribution — this is a выбор привычки, а не выбор установки, и привычкой по умолчанию должен быть rsync. Разница — в состоянии: scp открывает SSH-канал, льёт байты, закрывает и ничего не помнит. rsync перед отправкой строит список контрольных сумм назначения и переносит только различающееся. Всё на этой странице следует из этого одного предложения.

■ the answer first

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

scp cannot resume : обрыв на 900 МБ из 1 ГБ — не хватает 100 МБ — начинается с нуля. rsync с --partial --append-verify превращает этот перезапуск в паузу.

On re-runs rsync moves только изменённые блоки; scp re-sends everything. The one flag to take away: --partial.

ОДНА СТРОКА, С ПОЯСНЕНИЯМИ

Большинству нужна только она — каждый флаг подписан, по порядку:

завершающий слэш ловит каждого один раз — rsync даже предупреждает «no bytes transferred», когда вы имели в виду другую форму

ЧТО ДАЁТ РАЗНИЦА В СОСТОЯНИИ

scp does one thing: open an SSH channel, stream the bytes, close. No state between runs, so a transfer that dies at 90% restarts from zero and re-sends the whole 1,000 MB. rsync — инструмент синхронизации, случайно использующий SSH как транспорт: перед отправкой он строит список контрольных сумм назначения (rolling-checksum

RSYNC БЫСТРЕЕ?

Для первой копии одного крупного файла по быстрому каналу они близки — оба насыщают SSH, а проход контрольных сумм добавляет лишь небольшой накладной расход. Разрыв открывается в трёх местах:

  1. Много мелких файлов. rsync конвейеризует обход каталогов и может переиспользовать одно соединение; старые scp плодили процесс на файл. Тысячи мелких файлов — node_modules, установка WordPress — заканчиваются заметно быстрее с rsync.
  2. Повторные прогоны. Скопируйте файл на 4,0 ГБ, где изменилось 50 МБ, — rsync перенесёт примерно 50 МБ; scp снова тащит 4 ГБ.
  3. Compression. -z сжимает в полёте — помогает на медленных WAN-каналах.

Можете замерить сами — команда по форме одинакова, а ответ живёт в повторном прогоне:

# тот же файл, тот же сервер, оба по SSH
time scp bigfile.tar.gz user@server:/tmp/
time rsync -avh --progress bigfile.tar.gz user@server:/tmp/

# повтор обоих: scp копирует заново, rsync проверяет и шлёт ~ничего
time scp bigfile.tar.gz user@server:/tmp/
time rsync -avh --progress bigfile.tar.gz user@server:/tmp/

ЗАКЛИНАНИЕ ВОЗОБНОВЛЕНИЯ

Нет, scp не умеет возобновлять прерванную передачу — ни флага, ни трюка. Весь дизайн rsync исходит из того, что передачу иногда будут рвать:

rsync -avh --partial --append-verify --progress bigfile.tar.gz user@server:/srv/backup/

Завёрнутая в цикл повторов, это бэкап «настроил и забыл» даже по враждебному соединению:

until rsync -avh --partial --append-verify --progress \\
    ./bigfile.tar.gz user@server:/srv/backup/; do
  sleep 5
done

проверка: запустите тот же rsync снова → проверяет и шлёт ~ничего

КОГДА SCP ВСЁ ЖЕ ПОБЕЖДАЕТ

One subtlety worth knowing: the OpenSSH project deprecated scp's original protocol years ago, and modern scp actually speaks SFTP под капотом. Это исправило причуду с экранированием путей, но не изменило ничего в двух ограничениях, которые важны — нет возобновления, нет дельта-передачи. Смена протокола не делает scp rsync'ом. А если ваш вопрос на самом деле «rsync против cp»: cp — локальный аналог scp — без возобновления, без дельты, без атрибутов без флагов — и для локальных разовых задач его достаточно.

ОПАСНЫЙ

--delete зеркалит и удаления — стирает в назначении файлы, которых больше нет в источнике. Мощно для зеркал, опасно везде остальное. Сначала пробный прогон:

rsync -avh --delete --dry-run src/ user@server:/srv/dest/   # просмотреть
rsync -avh --delete src/ user@server:/srv/dest/             # затем применить

проверка: проход --dry-run печатает список удалений и ничего не меняет

Для ежедневной или еженедельной синхронизации положите rsync в systemd-таймер и позвольте копировать только дельты — журнал там, где прогоны оставляют свою историю.

ТАБЛИЦА ВЕРДИКТА

scprsync
Поставляется с OpenSSHYesДа (нужны оба конца)
Возобновление прерванной передачиNoДа (--partial)
Дельта-передача на повторахNoYes
Сохраняет права/симлинкиЧастичноПолностью (-a)
Шаблоны исключенияNo--exclude
Пробный прогонNo--dry-run
Зеркалит удаленияNo--delete
Лучше всего дляБыстрые разовые копииБэкапы, синхронизации, большие деревья

По умолчанию rsync для бэкапов, больших деревьев, всего, что идёт по каналу с обрывами, и всего, что будете запускать больше одного раза. scp — когда команда разовая и прерваться нечему — и всегда добавляйте --partial — превращает каждый будущий обрыв связи из перезапуска в паузу.

■ честный штамп Проверено на: rsync · scp (говорит SFTP под капотом) · ваши существующие ключи и конфиг SSH. Впервые опубликовано 2026-09-08, карточка обновлена 2026-10-04. Каждая команда запускается как напечатано; поведение возобновления, дельта-алгоритм и переход на SFTP — документированное поведение rsync и OpenSSH, набитое на передачах, реально обрывавшихся.

конец страницы копирования · ничего не скачано · всё локально