- Home »

Копирование файлов с помощью rsync через SSH
Сегодня поговорим о том, как копировать файлы между серверами быстро, надёжно и с минимальным геморроем — с помощью rsync через SSH. Если ты когда-нибудь сталкивался с задачей миграции сайта, бэкапа данных, синхронизации директорий между VPS или просто хотел автоматизировать рутину — этот пост для тебя. Здесь разберём, почему rsync — это не просто «копипаст», а инструмент, который экономит время, нервы и трафик. Покажу, как всё настроить, приведу реальные примеры, расскажу о подводных камнях и дам советы, которые пригодятся даже бывалым админам.
Как это работает?
В основе rsync лежит идея: не гонять по сети всё подряд, а передавать только то, что изменилось. Это достигается за счёт сравнения файлов на исходной и целевой стороне, вычисления контрольных сумм и передачи только новых или изменённых блоков. В связке с SSH получаем защищённый канал передачи данных — всё шифруется, никакой «голой» информации в сети.
- rsync — утилита для синхронизации файлов и директорий.
- SSH — протокол для защищённого соединения между машинами.
- Вместе: быстро, безопасно, удобно.
Выглядит это примерно так: ты запускаешь команду, указываешь источник и приёмник (например, user@host:/path/
), rsync через SSH соединяется с сервером, сравнивает содержимое, передаёт только нужные данные. Всё просто, но дьявол — в деталях.
Как быстро и просто всё настроить?
Для старта нужны две вещи: установленный rsync (обычно есть по умолчанию в Linux) и доступ по SSH к целевому серверу. Если SSH-ключи уже настроены — отлично, если нет, покажу как это сделать.
- Проверь, установлен ли rsync:
rsync --version
Если нет — ставим:
# Debian/Ubuntu
sudo apt update && sudo apt install rsync
# CentOS/RHEL
sudo yum install rsync
- Проверь SSH-доступ:
ssh user@remote_host
Если всё ок — идём дальше. - Настрой 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 — твой лучший друг в этом деле.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.