Rsync linux синхронизация каталогов

Обновлено: 07.07.2024

Утилиту Rsync можно использовать для копирования и синхронизации файлов и папок с локального сервера Linux на удаленный и наоборот. Rsync позволяет копировать ваши данные между серверами внутри защищенного SSH соединения. Так же, rsync, поддерживает сжатие данных на лету, что повышает производительность системы.

Чтобы исключить потерю информации при отправке файлов, rsync сначала копирует всю передаваемую информацию во временный файл. Другая важная особенность rsync – файлы передаются в один поток, не создается отдельный поток для каждого файла (что вызывает проблему при передаче большого количества маленьких файлов в других утилитах).

В данной статье мы рассмотрим варианты использования rsync для синхронизации и копирования каталогов и файлов, и приведем примеры его расширенных настроек.

Установка и основные параметр rsync

Установка rsync не отличается от установки, любого другого пакета. В CentOS пакет rsync присутствует в базовом репозитории и устанавливается через yum (или dnf в CentOS 8):

Синтаксис команды выглядит следующим образом:

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

  • -v – вывести подробную информацию о процессе
  • -c – проверка контрольных сумм файлов
  • -q – минимальная информация
  • -a – режим архивирования
  • -R – относительные пути
  • -y – не перезаписывать более новые файлы
  • -b – создание резервной копии
  • -l – копировать симлинки
  • -L – копировать содержимое ссылок
  • -H – копировать жесткие ссылки
  • -g – сохранять группу
  • -p – сохранять права для файлов
  • -t – сохранять время модификаций
  • -x – работать только в этой ФС
  • -e – использовать другой транспортный протокол (например, ssh)
  • -z – сжимать файлы перед передачей
  • -delete – удалять файлы которых нет в источнике
  • -exclude – исключить файлы
  • -recursive – перебирать директории рекурсивно
  • -no-recursive – отключить рекурсию
  • -progress – выводить прогресс передачи файлов
  • -stat – показать статистику передачи
  • -max-size – максимальный размер файла для передачи
  • -bwlimit — ограничение скорости для передачи файлов
  • -version – версия утилиты

Локальное копирование/синхронизация каталогов

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

В этом случае файл test.txt был просто скопирован в директорию /root/temp/

Можно добавить несколько опций для выполнения копирования. Например, чтобы перед выполнением копирования предварительно сжать файл, вывести подробную информацию и прогресс копирования файла, выполните:

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

Мы скопировали директорию /root/.config в директорию для резервных копий, опция -r позволила рекурсивно скопировать все вложенные директории и файлы.

Чтобы сохранить все атрибуты файлов при копировании, например, дату изменения и дату создания файлов, добавьте ключ -a:

Если вы хотите скопировать только измененные файлы, добавьте опцию -c:

Я изменил только один файл и запустил команду. В результате в целевую директорию, был скопирован только измененный файл.

Настройка синхронизации с удаленным сервером

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

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

Конфигурационный файл rsync — /etc/rsyncd.conf. В этом файле можно настроить параметры rsync и настройки для синхронизации для разных ресурсов.

Для синхронизации через демона rsync адрес удаленного сервера указывается так rsync://. Например:

Чтобы скопировать файл на удаленный сервер, используйте команду:

После запуска команды, удаленный сервер запросит пароль пользователя (если включена авторизация по паролю). Для автоматической авотризации нужно настроить SSH ключи.

Скопируем директорию с локального сервера на удаленный:

То есть, все тоже самое, что и с локальными директориями, только мы указываем адрес удаленного сервера.

Так же вы можете синхронизировать файлы и с удаленного сервера на локальный, команда для этого немного изменится:

Для принудительного использования SSH протокола для копирования файлов, укажите это в вашей команде (для выбора транспортного протокола копирования файлов используется опция –e):

Если удаленный SSH сервер имеет отличный от стандартного порт, его так же можно указать:

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

Если в рамках сессии синхронизации вы передаете много информации и важно ограничить скорость передачи, задайте это дополнительной опцией –bwlimit (указывается скорость в КБ/с):

При передаче файлов на удаленный сервер, вы можете ограничить максимальный размер файлов, которые нужно скопировать. Например, вы хотите скопировать все файлы, кроме файлов размером более 1 Мб:

Если у вас на сервере нужна односторонняя синхронизация и после переноса файлов на удаленный сервер нужно удалить файлы с исходного сервера, воспользуйтесь опцией -remove-source-files:

После выполнения команды, файл был скопирован на удаленный сервер и удален на источнике.

В данном случае мы исключили директорию “administrator” при копировании на удаленный сервер.

Резервное копирование в Linux с помощью rsync

В своей рабое я часть использую rsync для автоматических задач резервного копирования в Linux. Можно написать простые bash скрипты или просто добавить команду rsync в cron и выполнять по расписанию.

Например, можно добавить в cron команду:

01 30 * * * rsync -zvra root@192.168.1.1:/backup/ /backup

В результате каждый день в 1:30 ночи, будет выполняться синхронизация каталогов локального и удаленного серверов.

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


Как следует из названия, команда rsync используется для локальной и удаленной синхронизации (или копирования) файлов и каталогов. Одной из важных особенностей rsync является то, что он работает по « алгоритму дельта-передачи », что означает, что он будет только синхронизировать или копировать изменения из источника в место назначения вместо копирования всего файла, что в конечном итоге сокращает объем данных, отправляемых по сети. Вундеркинды Linux обычно используют команду rsync для повседневного управления резервным копированием, зеркалированием и восстановлением. Он использует удаленную оболочку, такую ​​как SSH, при синхронизации файлов с локальной машины на удаленную, и любой пользователь в системе может использовать команду rsync, поскольку она не требует прав root или sudo .

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

Команда Rsync доступна для всех операционных систем типа UNIX и Linux. Когда мы выполняем минимальную установку CentOS и RHEL OS, тогда пакет rsync не является частью установки по умолчанию, поэтому для установки rsync на CentOS и RHEL выполните следующую команду yum

В операционных системах Debian Like (Ubuntu и Linux Mint) используйте команду ниже apt для установки инструмента rysnc

Синтаксис команды rsync:

Некоторые из наиболее часто используемых параметров команды rsync перечислены ниже:

Давайте перейдем к полезным примерам команды rsync

Пример: 1) Копирование или синхронизация файлов локально (rsync -zvh)

Предположим, мы хотим скопировать файл из домашнего каталога пользователя pkumar в папку /opt/back, выполните следующую команду rsync >rsync -zvh /home/pkumar/OpenStack-Networking.pdf /opt/backup
OpenStack-Networking.pdf
sent 4.09M bytes received 35 bytes 2.73M bytes/sec
total size is 6.15M speedup is 1.50
[[email protected]

Выше мы использовали такие параметры, как -z для сжатия, -v для подробного вывода и -h для вывода, удобочитаемого человеком.

Пример: 2) Копировать или синхронизировать каталог локально (rsync -zavh)

Предположим, мы хотим скопировать или синхронизировать домашний каталог пользователя pkumar в папку /opt/backup выполните следующую команду rsync с параметрами -zavh,

Давайте проверим, скопирован ли каталог или нет, выполните команду ниже,

Как мы видим, каталог «pkumar» создается в папке назначения, и его содержимое также копируется. В приведенном выше примере, если использовать trail / после исходной папки(/home/pkumar/) тогда команда rsync не создаст каталог pkumar в месте назначения, а скопирует только содержимое..

Локальное рекурсивное копирование файлов и каталогов (rsync -zrvh or rsync -zavh)

Предположим, у нас есть несколько файлов и каталогов внутри домашнего каталога пользователя pkumar, используйте приведенную ниже команду rsync для рекурсивного копирования файлов и каталогов, либо используйте параметр -a или -r для рекурсивного копирования файлов и каталогов.

Примечание . В команде rsync параметр -a используется для архивирования во время копирования или синхронизации, а кроме архивирования параметр -a также используется для следующих целей:

  • рекурсивно копировать файлы и каталог
  • копировать символические ссылки как символические ссылки
  • сохранить разрешения, группу, время модификацииправо, собственности

Пример: 4) Копирование или синхронизация файлов и каталогов из локальной в удаленную систему.

Предположим, мы хотим скопировать папку “/home/pkumar/techi” с локальной машины на удаленную (192.168.1.29) /opt

Пример: 5) Копирование или синхронизация файлов и каталогов с удаленного компьютера в локальную систему.

Предположим, мы хотим скопировать файлы и каталоги с удаленного компьютера (192.168.1.29) в нашу локальную систему, в приведенном ниже примере я копирую удаленную папку “/opt/rpms_db” на моем локальном компьютере в папку /tmp

Вышеуказанная команда автоматически создаст папку “rpms_db” в папке /tmp на нашем локальном компьютере

Пример: 6) Укажите удаленную оболочку во время синхронизации (rsync -e ssh)

В команде rsync мы можем указать удаленную оболочку, например ssh, во время синхронизации, предположим, что мы хотим использовать безопасную связь между источником и целевой машиной через rsync, тогда мы должны использовать ssh в качестве удаленной оболочки, пример показан ниже

Пример: 7) Отображение хода синхронизации в выводе команды rsync

Если вы хотите видеть прогресс синхронизации или копирования в команде rsync, используйте “–progress“, пример показан ниже.

Пример: 8) Скопируйте структуру каталогов без копирования файлов

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

Предположим, мы хотим скопировать структуру каталогов “/home/pkumar” с локального компьютера на удаленный (192.168.1.29) в папку /opt folder.

Пример: 9) Возобновить передачу больших файлов после сбоя в scp

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

Таким образом, в этой ситуации можно использовать команду rsync, поскольку она может начать копирование файла с того места, где оно было остановлено или завершено, или, другими словами, rsync может передавать файлы, которые частично скопированы с помощью команды scp. Пример показан ниже,

Пример: 10) Удалить файлы в месте назначения, если его нет в источнике (–delete)

Если вы уже синхронизировали файлы из источника в место назначения и из источника вы удалили файлы, вы можете заставить команду rsync удалить файлы в месте назначения, используя параметр –delete, пример показан ниже

Пример: 11) Установите ограничение на размер передаваемого файла (–max-size)

Если вы не хотите передавать или копировать большие файлы с помощью rsync, используйте опцию ‘–max-size=’, Предположим, мы не хотим передавать файлы, чьи размер больше 500К,

Пример: 12) Не синхронизировать/копировать измененный файл в месте назначения

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

Пример: 13) Удалить файлы из источника после синхронизации (–remove-source-files)

Предположим, вы хотите удалить файлы из источника после завершения синхронизации с помощью команды rsync. В приведенном ниже примере папка из локальной системы “/home/pkumar/techi.tgz” синхронизируется с удаленной системой (192.168.1.29), после завершения синхронизации файл удаляется из источника.

Пример: 14) Команда rsync пробного запуска перед фактической синхронизацией

Могут быть ситуации, когда мы не говорим о поведении команды rsync, поэтому в таких случаях лучше выполнить пробный запуск rsync.

Пример: 15) Включить и исключить файлы во время синхронизации с rsync

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

В приведенном ниже примере вы хотите скопировать файлы типа pdf и rpm и исключить типы файлов png.

Пример: 16) Установите ограничение на скорость передачи данных в rsync(–bwlimit=<KB/s>)

В команде rsync мы можем установить ограничение полосы пропускания для передачи данных с одной машины на другую, используйте параметр‘–bwlimit=<KB/S>‘ в команде rsync, чтобы установить ограничение на скорость передачи данных.

Предположим, мы хотим установить максимальную скорость передачи данных (скорость) 600 КБ / с с помощью rsync, пример показан ниже.

Пример: 17) Просмотр разницы в файлах и каталогах между источником и местом назначения

Используйте параметр “-i” в команде rsync, чтобы указать разницу в файлах и каталогах между источником и местом назначения. Пример показан ниже

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

  • d: указывает на изменение в файле назначения
  • f: указывает файл
  • t: указывает изменение меток времени
  • s: указывает на изменение размера

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

Rsync Linux, или Команда Удалённой Синхронизации

Команда rsync в Linux эффективно передаёт и синхронизирует файлы или каталоги между локальной и удалённой машиной, удалённой оболочкой и соответствующей ей парой, другим хостом. Любой, кто работает с системами на базе Linux, должен использовать эту мощную утилиту для лучшей производительности. С помощью этой статьи вы узнаете всё, что вам нужно знать, чтобы пользоваться этой командой.

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

Попробуйте действительно надёжный облачный VPS-хостинг с отличной производительностью виртуального сервера. Наши виртуальные серверы созданы для скорости!

Основной Синтаксис

Основной синтаксис rsync работает следующим образом:

Существует несколько способов использования команды rsync Linux. В этом примере [необязательные модификаторы ] указывают действия, которые необходимо предпринять, [ SRC ] является исходным каталогом, а [ DEST ] — это целевой каталог или машина.

Основной Синтаксис для Удалённой Оболочки

Если вы используете удалённую оболочку, такую как SSH или RSH, синтаксис rsync будет немного другим.

Для доступа к удалённой оболочке ( PULL ) используйте команду rsync:

Для доступа к удалённой оболочке ( PUSH ) используйте команду rsync:

Как Проверить Версию Rsync

Прежде чем мы проверим версию rsync, нам нужно зайти на сервер VPS, который мы будем использовать. Это полезное руководство поможет вам сделать это на машине с Windows, используя Putty SSH. Если вы работаете на компьютере с MacOS или Linux, используйте вместо этого терминал.

Rsync предустановлен во многих дистрибутивах Linux. Чтобы проверить, установлен ли rsync на вашем компьютере, выполните следующую команду:

В нашем дистрибутиве Ubuntu, вот что мы увидим в выводе:

Это означает, что версия rsync 3.1.3 уже установлена на нашей машине.

Установка Rsync

Если на вашем компьютере предварительно не установлен rsync, вы можете сделать это вручную за минуту! В дистрибутивах на основе Debian , таких как Ubuntu , вы можете сделать это с помощью следующей команды:

Для дистрибутивов на основе rpm, таких как Fedora и CentOS, используйте следующую команду:

Для MacOS используйте следующую команду:

Вот и всё! Утилита rsync Linux готова к синхронизации данных, передачи и удалению файлов. Вы можете проверить успешность установки, используя ранее упомянутую команду:

Работа с Rsync: Примеры

Для этого руководства мы создали два каталога на нашем рабочем столе Linux и назвали их Original и Duplicate . Исходный каталог содержит три изображения, а дубликат пуст. Теперь давайте рассмотрим некоторые примеры rsync, увидим эту утилиту в действии.

Для создания двух тестовых каталогов используйте следующие команды:

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

Результат будет выглядеть примерно так:

Если вы используете команду ls с копией каталога, вывод должен быть пустым.

Теперь, когда наши каталоги готовы, давайте попробуем ещё несколько команд.

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

* поручает команде rsync синхронизировать всё в исходном каталоге с дубликатом.

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

Очень удобно использовать эту функцию, когда вы копируете файлы по сети с ограниченной пропускной способностью.

Самые Распространённые Команды Rsync

Вот список наиболее часто используемых с rsync опций:

Эта опция включает режим “архив”.

Вызывает визуальный вывод, который показывает прогресс процесса копирования.

Выводит данные в человекочитаемом формате.

Эта опция сжимает данные файла во время передачи.

Копирует данные рекурсивно.

Как Использовать Команды Rsync с Подкаталогами

Помните, что эта команда будет копировать файлы только из основного каталога папки Original , но не из подкаталогов.

Если вы хотите скопировать и подкаталоги, используйте эту команду:

Модификатор / , используемый после original , указывает rsync скопировать содержимое оригинального каталога в дубликат папки.

Как Синхронизировать Файлы

Если вы хотите синхронизировать файлы , то есть скопировать файлы, которые находятся в целевой, но не в исходной папке, в исходную папку, используйте следующую команду:

С помощью этой команды мы можем убедиться, что как исходные папки, так и дубликаты будут содержать одинаковые файлы.

Как Комбинировать Опции Rsync

Использование опции -a вместе с -v будет выглядеть примерно так:

Не волнуйтесь, ведь она только выглядит сложно! Давайте разберёмся.

Эта команда не делает каких-либо изменений, а просто показывает файлы, которые будут скопированы. С помощью этой команды вы можете получить список файлов, которые будут скопированы.

Другие Опции Команды Rysnc

При использовании опции -a с опцией -v, то есть -av в нашей команде, мы увеличиваем детализацию. Другими словами, с помощью -v мы получаем более визуальный вывод, который показывает прогресс процесса.

Если вы хотите синхронизировать две папки, но удалить элементы в папке-дубликате, которых нет в исходной папке, добавьте –delete , например:

Вы также можете пропустить определённые файлы или подкаталоги при синхронизации двух папок. Сделайте это, добавив -exclude=. Если вы хотите указать более одного файла, разделите их запятыми.

Или же наоборот: вы можете выбрать, какие файлы будут синхронизированы. Для этого вам нужно добавить опцию -include=. Она также может быть использована вместе с параметром -exclude=. В приведённом ниже примере будут скопированы только файлы, начинающиеся с буквы L, и исключены все остальные файлы:

Rsync также позволяет указать размер файла, который можно синхронизировать. Для этого используйте параметр –max-size:

Последняя опция команды, которую мы рассмотрим, это -z ( –compress ). Эта команда объединит файлы, которые передаются по сети. В качестве бонуса давайте посмотрим, как перенести файлы из исходного сервера на другой. Команда будет выглядеть так:

Как упоминалось ранее, -z сжимает файлы, -a или просто a, добавленная к -z, гарантирует, что все разрешения также будут скопированы.

/Desktop/Original — это исходник. Это локальный каталог, находящийся на компьютере, из которого вы вошли, и, наконец, olha@192.168.22.90:

/tmp/ означает место назначения. olha@192.168.22.90 — это адрес удалённого сервера назначения, а :

/tmp/ указывает на конкретную папку на этом компьютере.

Как Добавить Индикатор Выполнения

Ещё одна бонусная опция, которую можна добавить к вышеперечисленным командам — это -P. Она объединит параметры –progress и –partial, что добавит в вывод индикатор выполнения синхронизации файлов, а также позволит вам возобновить любую прерванную передачу файлов.

Результат будет выглядеть примерно так:

Затем, если мы снова запустим команду, вывод будет выглядеть намного короче. Это потому, что не было внесено никаких новых изменений. Вот пример вывода:

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

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

Как Создать Резервную Копию Rsync

Ещё одна важная команда — создание резервной копии rsync. Для этого объедините –backup с командой –dir, чтобы указать место для хранения резервных копий файлов.

Выводы

Это лишь малая часть того, что может rsync Linux! Это невероятно мощная утилита, о которой должен знать и уметь пользоваться каждый системный администратор или разработчик Linux. В этом руководстве мы разобрались с основами — установкой и основными командами. Если вас интересуют более продвинутые функции, продолжайте знакомиться с ними в официальной документации.

Приготовьтесь быть ещё более эффективным! Успехов с вашими проектами!

Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.

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

В статье разберемся как установить и настроить утилиту Rsync, как она устроена и покажем как при помощи Rsync выполнить резервное копирование файлов в облачное хранилище Selectel.

Rsync — утилита для удаленной синхронизации и копирования файлов. Ее еще можно назвать «SCP на стероидах». Из преимуществ: позволяет не передавать файлы полностью, а только изменения в них, синхронизирует директории и файлы, имеет встроенный механизм сжатия. Это далеко не полный список.


В статье будем использовать сервер конфигурации EL09-SSD с шестиядерным процессором Intel® Xeon® E-2236, 16 Гб оперативной памяти, двумя дисками по 480 Гб и операционной системой CentOS 8 64-bit.


После выбора операционной системы можно переходить к завершению заказа и нажатию на кнопку Заказать сервер. Через несколько минут сервер готов к работе.

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

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

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

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

Вместе с файлами или каталогами, Rsync реплицирует также и разрешения на них. Вместе с этим, для работы не требуются права root, поэтому Rsync подойдет для целей резервного копирования и восстановления данных.

Как установить, настроить и выполнить запуск Rsync на CentOS 8

Установка Rsync на Centos 8 выполняется из репозитория операционной системы, стандартным пакетным менеджером dnf:

Эта команда установит саму утилиту rsync (клиентскую часть) и демон rsync (серверную часть). Серверная часть нужна для приема входящих обращений на синхронизацию через rsync без использования SSH. Позже покажем как обратиться к ней с внешнего сервера.

Перед началом работы необходимо выполнить настройку. Конфигурация выполняется в файле /etc/rsyncd.conf:

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

Рекомендуем использовать для переменных uid и gid непривилегированные учетные записи.

Перед запуском утилиты, нужно также создать указанную в конфигурации директорию:

На этом настройка Rsync в Linux завершена и можно запускать утилиту:

Теперь выполним настройки безопасности. Чтобы Rsync работал корректно, важно настроить SELinux и сетевой экран:

Проверим статус сервиса rsyncd:


Синтаксис Rsync

В этом разделе мы приведем основные параметры, с которыми выполняется Rsync. Синтаксис в общем виде выглядит так:

-options — параметры, с которыми должна выполняться утилита.

<source>— каталог или файл, который является источником.

<destination> — каталог или файл, который является приемником.

Ниже приведены основные параметры, с которыми вызывается Rsync:

Теперь разберем частные случаи работы Rsync, для которых может потребоваться ввод дополнительных параметров.

Копирование и синхронизация файлов с rsync (локально и удаленно)

При локальном режиме работы достаточно задать каталог/файл-источник и каталог/файл-приемник:

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

Для корректной работы с удаленным узлами необходимо настроить доступ по ключам. Rsync этот метода подключения также поддерживает. Об использовании ключей для подключения к серверу мы рассказывали в предыдущей статье.

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

По умолчанию синхронизация выполняется по протоколу SSH (cм. примеры выше), дополнительные параметры для этого указывать не требуется. Чтобы обращаться напрямую к Rsync, минуя SSH, на сервере-приемнике должен быть запущен демон Rsync. В предыдущем разделе мы как раз уже это сделали, поэтому можем обратиться с удаленного сервера:

Автоматическая синхронизация папок

Автоматическая синхронизация папок выполняется штатным способом — планировщиком заданий (cron). Планировщиком удобнее выполнять скрипт, так будет упрощается управление конфигурацией синхронизации. Создадим скрипт:

Далее создадим задание в планировщике:

Просмотр прогресса синхронизации

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

Ограничение максимального размера и скорости передачи

Опции include и exclude

Пример использования Rsync для синхронизации с облачным хранилищем Selectel


Зададим имя для контейнера и нажмем кнопку Создать контейнер:


Утилита Rsync умеет синхронизироваться по SSH с директориями или через демон Rsync. SSH-подключение к облачному хранилищу или установка в него Rsync невозможны. Один из вариантов доступа к облачному хранилищу — S3 API. В связи с этим есть возможность примонтировать его к файловой системе, чтобы обращаться как к локальному разделу. Чтобы реализовать такой подход, нам нужно установить и настроить специальную утилиту s3fs. Предварительно установим необходимые пакеты:

Далее перейдем в директорию /tmp, клонируем в нее репозиторий этой утилиты, скомпилируем ее и установим:

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

Чтобы создать пользователя облачного хранилища, перейдем в меню Пользователи и нажмем кнопку Создать пользователя:


Имя пользователя создается в формате НомерАккаунта_ИмяПользователя, например, 12345_rsync. Пароль можно сгенерировать в этом же меню. Обязательно нужно выбрать чекбокс Использовать эти данные для доступа по протоколу S3. Теперь можно нажимать кнопку Создать:


Сохраним имя пользователя и пароль в специальном файле и ограничим права на чтение:

Создадим точку монтирования и примонтируем к ней облачное хранилище при помощи утилиты s3fs:

Теперь можно проверить результат. Перейдем в директорию /mnt/selectel и попробуем создать там пустой файл:

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

Теперь все готово к работе утилиты Rsync. Уже знакомым способом, можно выполнить синхронизацию так, как будто мы работаем с локальной директорией:

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

Таким образом, можно настроить синхронизацию выделенного сервера с облачным хранилищем Selectel или наоборот.

Заключение

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

Читайте также: