Ответ
Основным и более продвинутым аналогом 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 незаменим для:
- Синхронизации контента между серверами (например, статические файлы веб-приложения).
- Создания резервных копий на удаленный хост.
- Развертывания кода на серверах, где нет полноценного CI/CD (хотя это антипаттерн, иногда требуется для ад-hoc задач).
# Пример: Синхронизация логов с удаленного сервера, исключая временные файлы
rsync -avz --delete --exclude='*.tmp' user@web-server:/var/log/app/ /backup/logs/web-server/
Для простой однократной передачи одного файла scp может быть быстрее в использовании, но для любых задач синхронизации или регулярного копирования rsync — безусловный выбор.