Установка RSYNC

Пошаговое руководство по установке и настройке Remote Synchronization (RSYNC) для синхронизации данных.

rsync (Remote Synchronization) — кроссплатформенное консольное приложение для синхронизации данных с минимальным расходом трафика. Оно широко применяется для резервного копирования, миграции и зеркалирования данных между серверами.

Например, с помощью rsync можно переносить проекты с виртуального хостинга на VPS, синхронизировать каталоги между несколькими выделенными серверами, поддерживать актуальные копии файлов внутри инфраструктуры.

Установка rsync

Для установки модуля rsync на сервере выполните соответствующие команды в зависимости от операционной системы.

Для CentOS:

yum -y install rsync

Для Debian/Ubuntu:

sudo aptitude install rsync

Примеры использования rsync

Локальная синхронизация

sudo rsync -avh --delete /var/www/ /root/backup/www/

Эта команда синхронизирует содержимое каталога /var/www/ с /root/backup/www/, удаляя файлы, которых больше нет в источнике. Это полезно для создания зеркала директории.

Синхронизация на удалённый сервер

sudo rsync -avh --delete /var/www/ root@192.168.1.50:/root/backup/www/

В этом примере файлы будут скопированы на другой сервер по SSH. В этом случае для выполнения синхронизации необходима установка rsync на обоих серверах.

Синхронизация с удалённого сервера на локальный

sudo rsync -avh root@192.168.1.50:/var/www/ /root/backup/www/

Этот пример показывает синхронизацию данных с удалённого сервера на локальную машину. С помощью этого можно перенести файлы с другого сервера.

Синхронизация через SSH с нестандартным портом

sudo rsync -avh -e "ssh -p 1111" root@192.168.1.50:/var/www/ /root/backup/www/

Если SSH-сервер настроен на нестандартный порт, например 1111, используйте параметр -e для указания порта. Этот пример позволит синхронизировать файлы через SSH на другом порту.

Исключение каталогов

sudo rsync -avh --exclude='dir/' --exclude='dir/tmp/' /var/www/ /root/backup/www/

В данном примере файлы из каталогов dir и dir/tmp будут исключены из синхронизации. Это полезно, если вы хотите исключить временные или ненужные данные из резервного копирования.

Перенос файлов с удалённого сервера (с удалением источника)

sudo rsync -avh --remove-source-files root@192.168.1.50:/var/www/ /var/www/

Этот пример копирует файлы с удалённого сервера и одновременно удаляет их из исходной директории, что полезно при переносе данных с сервера на сервер.

Копирование базы данных MySQL на другой диск

sudo rsync -vrplogDtH --progress /var/lib/mysql/ /newhdd/var/lib/mysql/

Этот пример используется для копирования всей базы данных MySQL, включая её структуру и файлы. Используется ключ --progress, чтобы отслеживать ход передачи.

Часто используемые параметры и флаги rsync

  • -v — подробный режим (verbose), который выводит дополнительную информацию о процессе копирования.
  • -r — рекурсивное копирование (recursive), которое используется для копирования каталогов.
  • -a — режим архивирования (archive), сохраняет права доступа, симлинки, временные метки и структуру каталогов.
  • -b — создание резервных копий (backup), создаёт копии изменённых файлов перед их заменой.
  • -c — проверка по контрольным суммам (checksum), гарантирует, что данные были синхронизированы корректно.
  • --delete — удаление файлов, которые больше не существуют в исходной папке.
  • -h — человекочитаемый вывод (human-readable), выводит размеры файлов в удобном для восприятия формате (например, в мегабайтах).
  • -n — тестовый запуск без изменений (dry-run), позволяет увидеть, что будет сделано, без выполнения.
  • -p — сохранение прав (permissions), гарантирует, что права доступа к файлам сохранятся.
  • -z — сжатие данных при передаче (compress), что помогает уменьшить объём передаваемых данных.
  • -H — сохранение жёстких ссылок (hard links), если они имеются в исходных данных.
  • -x — не выходить за пределы файловой системы (one-file-system), ограничивает копирование только одной файловой системой.

Полный список доступных опций можно найти в справке:

man rsync

Помощь

Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!

Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам