Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Установка, настройка и примеры синхронизации Rsync

5978
9 минут чтения
Средний рейтинг статьи: 4.9

Передача файлов – одна из распространенных операций между удаленным хостом и локальным рабочим местом. И часть такой работы заключается в синхронизации файлов и каталогов, которая обычно осуществляется в автоматическом режиме (например, при совместной обработке проектов, для создания резервных копий важных данных). С этой целью на серверах часто используют утилиту Rsync, способную поддерживать коннект по зашифрованным каналам SSH и SSL.

Установка, Настройка И Примеры Синхронизации Rsync (1)

Возможности Rsync

Привлекает в этом решении поддержка выборочной синхронизации – хоть отдельных файлов, хоть целой структуры каталогов. Процедура одинаково эффективна при обмене данными между виртуальными машинами, сетевыми хранилищами, дисками. Сразу после запуска все выбранные файлы копируются целиком, а затем система передает только измененные блоки. Благодаря такому подходу задача выполняется даже при наличии только «узкого» сетевого канала.

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

Как установить, настроить и запустить утилиту Rsync (на примере CentOS 8 Stream)

Перечисленные возможности определяют основное назначение утилиты – резервирование данных или их восстановление после системных крахов. Наличие такой системы обязательно для любого удаленного хоста, развернутого в «ручном режиме». Например, если пользователь оплатил доступ к физическому серверу у провайдера timeweb.cloud и самостоятельно развернул виртуальную машину и другие сервисы.

Дистрибутив утилиты Rsync на Linux CentOS 8 доступен в официальном репозитории операционной системы и загружается командой:

    

После ее ввода будет автоматически установлена клиентская часть утилиты и ее серверная часть (Rsync Daemon). Второй модуль нужен для приема входящих обращений без использования канала SSH, когда передача данных осуществляется по протоколу rsync. Работает она в соответствии с настройками, внесенными в файл конфигурации /etc/rsyncd.conf. 

Чтобы открыть его на изменение, например, с помощью редактора nano, нужна команда:

    

В файле используются следующие переменные:

  • pif file – файл, куда система будет сохранять номера процессов демона;
  • lock file – создается файл, блокирующий запуск дубликата программы Rsync;
  • log file – журнал, предназначенный для фиксации происходящих событий;
  • path – ссылка на каталог, который предстоит синхронизировать;
  • hosts allow – «белый список» удаленных машин с допуском для подключения;
  • hosts deny – «черный список» хостов, кому запрещена передача данных;
  • list – флаги запрета/разрешения на чтение указанного каталога;
  • uid – логин аккаунта, под которым будет осуществляться синхронизация;
  • gid – то же, но имеет отношение к группе пользователей с допуском к резервированию;
  • read only – флаг, позволяющий защищать данные от удаления или изменения;
  • comment – описание конфигурации.

Дополнительные сведения можно найти в документации.

В строках uid и gid рекомендуется указывать непривилегированные аккаунты (учетные записи для решения специализированных задач). Такой подход упрощает контроль над доступом к служебным задачам и позволяет сохранить настройки при смене рядовых пользователей. После сохранения изменений в конфигурационном файле утилита готова к запуску, остается лишь создать указанный в настройках каталог:

    

Запуск программы осуществляется по команде:

    

И первое, что рекомендуется сделать перед эксплуатацией, это настроить безопасность. Иначе при обращении утилиты к хосту возможна блокировка на уровне сетевого экрана и сервиса SELinux. Это выполняется последовательностью команд:

    

Теперь можно проверить текущий статус Rsync:

    

VDS и VPS

Гибкие виртуальные серверы с почасовым
биллингом по всему миру: Россия, Азия и Европа.

Синтаксис Rsync

Общий синтаксис Rsync выглядит так:

    

Options – это параметры для запуска программы, source – ресурс, являющийся источником для синхронизации, destination – каталог-приемник, куда будут скидываться синхронизируемые файлы и каталоги.

Перечень Rsync Options:

  • -v, -verbose – процесс синхронизации отображается на экране;
  • -q, -quiet – вывод об ошибках будет заблокирован;
  • -c, -checksum – включается сравнение контрольной суммы вместо даты, времени и размера как индикаторов изменения файлов;
  • -a, -archive – активируется поддержка архивации данных;
  • -r, -recursive – будет использоваться рекурсивный режим копирования каталогов;
  • -b, -backup – обновление оригинальных файлов приводит к созданию резервной копии;
  • -backup-dir=<каталог> – принудительное указание, где хранить резервные копии;
  • -suffix=SUFFIX – дополнительный символ, добавляемый к резервным файлам;
  • -u, -update – файлы с более поздней датой корректировки будут пропускаться;
  • -l, -links – включается режим сохранения символических ссылок;
  • -H, hard-links – будут сохраняться жесткие ссылки;
  • -p, -perms – утилита сохранит неизменными разрешения на файл или каталог;
  • -E, executability – также сохранятся права на исполнение (запуск файлов);
  • -chmod=<права> – после копирования объекта права меняются на указанные;
  • -o, owner – сохранять информацию о первоначальном владельце файлов и каталогов;
  • -g, group – то же, но имеет отношение к целой группе владельцев;
  • -S, -sparse – одновременно с копированием осуществляется дефрагментация данных;
  • -n, -dry-run – сервер осуществляет только тестирование канала резервирования;
  • -W, -whole-file – файлы всегда копируются полностью, а не только их измененная часть;
  • -delete – файлы, отсутствующие в источнике, считаются старыми и удаляются;
  • -delete-before – перед началом синхронизации каталог-приемник полностью очищается;
  • -max-delete=<количество файлов> – ограничивает максимальное число удаляемых файлов;
  • -max-size=<размер файлов> – ограничивается максимальный объем копируемых файлов;
  • -min-size=<размер файлов> – аналогично, но в отношении минимального объема;
  • -z, -compress – сжатие файлов происходит при передаче на удаленный сервер;
  • -compress-level=<число> – пользователь устанавливает степень сжатия;
  • -exclude=<имена файлов> – указанные файлы будут переданы без архивации;
  • -exclude-from=<имя файла> – исключить ряд файлов из синхронизации;
  • -include=<имена файлов> – принудительная синхронизация указанных файлов;
  • -include-from=<имя файла> – синхронизировать то, что указано списком в файле;
  • -port=<порт> – выбор порта, используемого для подключения к удаленному хосту;
  • -progress – отображать строку прогресса, указывающую процент выполнения задачи;
  • -log-file=<файл> – указать расположение файла для журналирования процессов;
  • password-file=<файл> – позволяет автоматизировать парольный доступ к системе;
  • -list-only – включается эмуляция синхронизации с отображением имен файлов;
  • -bwlimit=<число> – вводится ограничение скорости передачи (в единицах Кбит/с);
  • -4, ipv4 – приоритет отдается протоколу IPv4;
  • -6, ipv6 – то же в отношении IPv6;
  • -version – на экран выводится текущая версия утилиты Rsync.

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

Наиболее востребованные команды – копирование файлов, синхронизация целого каталога с источников, в том числе посредством канала SSH. Пользователи активно применяют отображение прогресса операций, ограничение скорости передачи, чтобы не «забивать» пропускную способность канала связи.

Копирование файлов

Рассмотрим в качестве примера локальное применение утилиты Rsync. В этом случае источник и приемник (речь о каталогах) будут относиться к одному диску:

    

Если планируется работать с удаленным хостом, в команду нужно добавить логин пользователя и IP-адрес (имя узла):

    

Во втором случае предварительно требуется настроить доступ по ключам.

Синхронизация через SSH и Rsync-демон

Программа по умолчанию использует защищенный протокол передачи данных SSH (Rsync over SSH). Никаких дополнительных параметров для активации указывать не требуется. Благодаря такой функции есть возможность прямого обращения к демону Rsync без каких-либо сторонних утилит. Пример обращения:

    

Просмотр прогресса операций

Большие объемы данных лучше передавать с визуальным контролем прогресса. Это позволит убедиться, что действительно все файлы и каталоги были синхронизированы. Пример команды для включения Rsync Progress:

    

Удаление файлов при синхронизации

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

    

Ограничение скорости передачи данных

Канал связи часто ограничен по пропускной способности, ведь его используют и для решения ряда других задач. Или планируется это делать в ближайшее время. С этой целью процесс копирования понижают в приоритете за счет ограничения максимальной скорости обмена данными. Команда:

    

Иногда более выгодным становится отказ от резервирования больших по объему файлов. Такой подход актуален, если они являются преимущественно временными, когда на удаленный хост переносят только результат, просчитанные проекты. Пример команды:

    

Применение опций include и exclude

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

    

Разверните свой Linux VDS в Timeweb Cloud

Cloud MSK 15

477 ₽/мес

Процессор
1 x 3.3 ГГц
Память
1 ГБ
NVMe
15 ГБ
Канал
1 Гбит/с
Публичный IP
Cloud MSK 30

657 ₽/мес

Процессор
1 x 3.3 ГГц
Память
2 ГБ
NVMe
30 ГБ
Канал
1 Гбит/с
Публичный IP

Заключение

Программа Rsync привлекательна для использования по нескольким причинам. Во-первых, она работает как с параметрами по умолчанию, так и по спискам файлов-каталогов, созданным вручную. Во-вторых, она самостоятельно использует защищенный формат передачи данных через SSH и не требует инсталляции дополнительного софта. Кроме того, процесс передачи файлов легко автоматизировать штатным планировщиком.

5978
9 минут чтения
Средний рейтинг статьи: 4.9
Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server