Мир Линукса
rsync, scp и sftp: чем копировать, чтобы потом не было больно
В 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, всё остальное - компромисс.
16 · 510 ·