Какой есть аналог scp в Linux?

«Какой есть аналог scp в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основным и более продвинутым аналогом scp является утилита rsync.

Почему rsync часто лучше scp:

  • Инкрементное копирование: Копирует только измененные части файлов, что значительно ускоряет передачу при повторных копиях или синхронизации больших директорий.
  • Верификация данных: Может проверять целостность переданных данных с помощью алгоритмов контрольных сумм.
  • Гибкость: Поддержка символьных ссылок, прав, временных меток, исключения файлов по шаблонам.
  • Эффективность: Меньшая нагрузка на сеть за счет сжатия данных на лету (флаг -z).

Базовый пример копирования, аналогичный scp:

# Копирование локальной директории на удаленный сервер с сохранением атрибутов
rsync -avz /path/to/local/dir/ user@remote-host:/path/to/remote/dir/

Ключи:

  • -a (archive): Рекурсивное копирование с сохранением прав, владельцев, временных меток и симлинков.
  • -v (verbose): Подробный вывод.
  • -z (compress): Сжатие во время передачи.

Практическое применение в DevOps: rsync незаменим для:

  1. Синхронизации контента между серверами (например, статические файлы веб-приложения).
  2. Создания резервных копий на удаленный хост.
  3. Развертывания кода на серверах, где нет полноценного CI/CD (хотя это антипаттерн, иногда требуется для ад-hoc задач).
# Пример: Синхронизация логов с удаленного сервера, исключая временные файлы
rsync -avz --delete --exclude='*.tmp' user@web-server:/var/log/app/ /backup/logs/web-server/

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