В Linux есть три популярных способа копирования файлов по сети:
scp, sftp и rsync. Формально все они работают поверх SSH и считаются безопасными, но на практике решают разные задачи.Протоколы и принцип работы
scp - это прямое копирование файла “как есть”. Он не знает, что копирует, не умеет продолжать передачу и каждый раз гоняет файл целиком.
sftp - интерактивный файловый протокол поверх SSH.Больше похож на FTP: можно ходить по каталогам, забирать файлы, но для автоматизации и массовых операций он неудобен.
rsync - не просто копирование, а синхронизация.Он сравнивает источник и назначение и передаёт только различия. Именно поэтому его используют в проде.
Ускорение и контроль передачи
rsync выигрывает за счёт флагов:🟢
--partial - продолжение прерванной передачи🟢
--compress - сжатие данных на лету🟢
--progress - реальный прогресс, а не “ждите”В
scp максимум, на что можно рассчитывать - флаг -C для сжатия, без контроля состояния.Безопасность
Все три работают по SSH.
Если настроены ключи, отключён пароль и ограничены права - по безопасности разницы нет.
Но
rsync позволяет тонко управлять тем, что и куда копируется, что снижает риск случайно затереть прод.Частые ошибки rsync
🗄 забывают
/ в конце пути и копируют каталог целиком🗄 используют -
-delete без dry-run🗄 синхронизируют
/etc, не исключив секреты🗄 копируют миллион мелких файлов без
--inplaceКогда использовать что
✅Бэкапы 👉
rsync✅Миграции серверов 👉
rsync✅Перенос конфигов 👉
rsync✅Один файл быстро забрать 👉
scp✅Ручная работа с файлами 👉
sftpЕсли коротко: в автоматизации rsync, всё остальное - компромисс.