Home » Копирование файлов с помощью rsync через SSH
Копирование файлов с помощью rsync через SSH

Копирование файлов с помощью rsync через SSH

Сегодня поговорим о том, как копировать файлы между серверами быстро, надёжно и с минимальным геморроем — с помощью rsync через SSH. Если ты когда-нибудь сталкивался с задачей миграции сайта, бэкапа данных, синхронизации директорий между VPS или просто хотел автоматизировать рутину — этот пост для тебя. Здесь разберём, почему rsync — это не просто «копипаст», а инструмент, который экономит время, нервы и трафик. Покажу, как всё настроить, приведу реальные примеры, расскажу о подводных камнях и дам советы, которые пригодятся даже бывалым админам.

Как это работает?

В основе rsync лежит идея: не гонять по сети всё подряд, а передавать только то, что изменилось. Это достигается за счёт сравнения файлов на исходной и целевой стороне, вычисления контрольных сумм и передачи только новых или изменённых блоков. В связке с SSH получаем защищённый канал передачи данных — всё шифруется, никакой «голой» информации в сети.

  • rsync — утилита для синхронизации файлов и директорий.
  • SSH — протокол для защищённого соединения между машинами.
  • Вместе: быстро, безопасно, удобно.

Выглядит это примерно так: ты запускаешь команду, указываешь источник и приёмник (например, user@host:/path/), rsync через SSH соединяется с сервером, сравнивает содержимое, передаёт только нужные данные. Всё просто, но дьявол — в деталях.

Как быстро и просто всё настроить?

Для старта нужны две вещи: установленный rsync (обычно есть по умолчанию в Linux) и доступ по SSH к целевому серверу. Если SSH-ключи уже настроены — отлично, если нет, покажу как это сделать.

  1. Проверь, установлен ли rsync:

    rsync --version

    Если нет — ставим:

    # Debian/Ubuntu
    sudo apt update && sudo apt install rsync
    # CentOS/RHEL
    sudo yum install rsync
  2. Проверь SSH-доступ:

    ssh user@remote_host

    Если всё ок — идём дальше.
  3. Настрой SSH-ключи (чтобы не вводить пароль каждый раз):

    ssh-keygen -t ed25519 -C "[email protected]"
    ssh-copy-id user@remote_host

    Теперь можно подключаться без пароля.

Всё, теперь можно копировать файлы одной командой!

Примеры, схемы, практические советы

Вот несколько сценариев, которые встречаются чаще всего:

  • Миграция сайта: переносим директорию с контентом и конфигами на новый сервер.
  • Бэкап данных: регулярное копирование важных файлов на резервный сервер.
  • Синхронизация между VPS: держим несколько серверов в актуальном состоянии.
Сценарий Плюсы Минусы Рекомендации
Миграция сайта Быстро, минимальный даунтайм, можно делать инкрементально Нужно следить за правами, символическими ссылками Используй опции -aHAX для сохранения всего важного
Бэкап данных Экономия трафика, можно автоматизировать скриптами Не защищает от случайного удаления на обоих концах Добавь --delete с осторожностью, делай отдельные бэкапы
Синхронизация между VPS Поддерживает актуальность данных, удобно для кластеров Возможны конфликты при одновременном изменении Используй --dry-run перед запуском, чтобы увидеть, что изменится

Команды для rsync через SSH

Вот базовые и продвинутые команды, которые пригодятся в работе:


# Копировать локальную папку на удалённый сервер
rsync -avz /local/path/ user@remote_host:/remote/path/

# Копировать с удалённого сервера на локальный
rsync -avz user@remote_host:/remote/path/ /local/path/

# Использовать нестандартный порт SSH (например, 2222)
rsync -avz -e "ssh -p 2222" /local/path/ user@remote_host:/remote/path/

# Исключить определённые файлы или папки
rsync -avz --exclude 'cache/' --exclude '*.tmp' /local/path/ user@remote_host:/remote/path/

# Только показать, что будет скопировано (без реального копирования)
rsync -avzn /local/path/ user@remote_host:/remote/path/

# Удалять на приёмнике файлы, которых нет на источнике (ОСТОРОЖНО!)
rsync -avz --delete /local/path/ user@remote_host:/remote/path/

# Сохранять права, владельцев, ссылки, ACL, xattr
rsync -aHAX /local/path/ user@remote_host:/remote/path/

# Логировать процесс
rsync -avz --log-file=rsync.log /local/path/ user@remote_host:/remote/path/

Похожие решения, альтернативы и сравнение

Есть и другие способы копировать файлы между серверами, но у каждого свои нюансы:

Инструмент Плюсы Минусы Когда использовать
scp Просто, встроено в SSH Передаёт всё целиком, нет инкрементальности, не умеет синхронизировать Разовые копирования небольших файлов
rsync Инкрементально, быстро, экономит трафик, много опций Нужно разбираться в ключах, иногда сложно с правами Регулярные синхронизации, бэкапы, миграции
lftp (mirror) Работает по FTP/SFTP, умеет зеркалировать Медленнее, не так гибко с правами Когда нужен FTP/SFTP, нет SSH
Unison Двунаправленная синхронизация Сложнее в настройке, не всегда стабильно Когда нужно синхронизировать изменения в обе стороны

Официальные ссылки:

Интересные факты и нестандартные способы использования

  • rsync можно использовать для горячей миграции — сначала копируешь всё, потом выключаешь сервис, докидываешь только изменённое, минимальный даунтайм.
  • Можно синхронизировать не только файлы, но и жёсткие ссылки, ACL, extended attributes — удобно для сложных файловых систем.
  • rsync поддерживает ssh-agent и ProxyJump — можно копировать через промежуточные серверы, не раскрывая пароли.
  • В связке с cron или systemd timers — автоматизация бэкапов и синхронизаций на уровне «поставил и забыл».
  • Можно использовать rsync daemon для передачи по нестандартным портам или без SSH (но это уже отдельная история).

Статистика и сравнение производительности

В реальных задачах rsync экономит до 90% трафика при повторных синхронизациях (если изменилось мало файлов). По скорости передачи больших директорий с множеством мелких файлов rsync часто обходит scp и lftp, особенно при использовании опции --compress (-z).

  • Передача 10 ГБ данных с 1% изменений: rsync — 2-3 минуты, scp — 20-30 минут (копирует всё заново).
  • Синхронизация 1 млн мелких файлов: rsync быстрее, если использовать --whole-file и --inplace.
  • Бэкап больших архивов: rsync с --partial позволяет докачивать файлы после обрыва соединения.

Автоматизация и новые возможности

rsync отлично вписывается в автоматизацию:

  • Скрипты для ежедневных/ежечасных бэкапов (cron, systemd timers).
  • Интеграция с CI/CD для доставки артефактов на серверы.
  • Гибкая фильтрация: можно исключать/включать файлы по маскам, синхронизировать только нужные типы данных.
  • Мониторинг и логирование: --log-file + парсинг логов для оповещений.
  • Сценарии «горячей» миграции: сначала rsync, потом короткий даунтайм и финальная синхронизация.

Всё это позволяет строить надёжные и масштабируемые решения для хостинга, разработки, резервного копирования.

Вывод — почему, как и где использовать rsync через SSH

Если тебе нужен быстрый, надёжный и гибкий способ копировать или синхронизировать файлы между серверами — rsync через SSH вне конкуренции. Это must-have в арсенале любого, кто работает с VPS, выделенными серверами, занимается DevOps или просто хочет автоматизировать рутину. Он экономит время, трафик и нервы, позволяет строить сложные схемы миграции и бэкапа, легко интегрируется в скрипты и CI/CD.

Используй rsync для:

  • Миграции сайтов и сервисов между хостингами
  • Регулярных бэкапов на резервные серверы
  • Синхронизации данных между несколькими VPS
  • Автоматизации и мониторинга инфраструктуры

Если ещё не выбрал сервер для своих задач — посмотри VPS или выделенные серверы на этом блоге — там есть варианты под любые сценарии.

Прокачивай свои навыки, автоматизируй рутину и не забывай: хороший бэкап — это тот, который можно восстановить. А rsync — твой лучший друг в этом деле.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked