Kservistorg.ru

Все о бытовой технике
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Rsync; копирование и синхронизация файлов с удаленным сервером

Rsync — копирование и синхронизация файлов с удаленным сервером

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

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

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

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

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

rsync уже установлен в системе

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

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

  • -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:

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

Так же очень удобный опции —include и —exclude, с помощью этих опций, можно делать исключения по копированию директорий или файлов:

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

Добавлением опции —include мы смогли задать фильтр по файлам, скопировали только файлы с расширением php.

Резервное копирование в 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 примеры использования в Handy Backup Server Network

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

Версия 8.0.4 от 10 июля 2019. 104 MB
Программа резервного копирования Handy Backup. 27800 RUB за лицензию

Как скопировать/синхронизировать файлы у себя на компьютере

Данная команда копирует файлы (т.е. содержимое) из каталога /home/user/Downloads/TEMP/files/ в каталог /home/user/Downloads/TEMP/copyfiles.

  • если в конце пути до источника (каталога) нет слэша, то будет скопирован сам каталог (в примере выше это files).
  • если слэш указан, то будет скопировано содержимое каталога (т.е. то, что внутри files, из примера выше)

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

Находясь в нужном каталоге, мы скопировали каталог 2021, файл logo.svg.png и еще один каталог copy2021 в несуществующий ранее каталог copydir.

Вот как это выглядит наглядно:

Получается это не плохая альтернатива cp 🙂

Как создать задание для планировщика Cron

Я думаю, вы вряд ли хотели бы запускать синхронизацию вручную, потому что можете где-то допустить ошибку или, например, не учесть изменение структуры каталогов на серверах. Чтобы настроить автоматизацию, вам нужно создать задание cron для server1.
Давайте создадим скрипт для запуска синхронизации:

В этот файл нужно добавить следующее:

Далее нужно выдать скрипту права на исполнение:

Создайте задание для Cron с помощью команды:

После этого наберите:

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

Я показал, что Unison позволяет легко синхронизировать каталоги на двух серверах Linux. Можете проверить это сами, добавив файлы в соответствующие тестовые каталоги /data1 и /data2 на обоих серверах. Убедившись, что синхронизация работает, вы можете использовать её в боевом режиме на продакшн-серверах.

На правах рекламы

VDSina всегда рада предложить надёжные серверы для любых задач. Вам доступен огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного образа, а также использовать высокоскоростную локальную сеть между серверами в пределах одной локации.

Читайте так же:
Регулировка высоты кухонных гарнитуров

Как клонировать сервер CentOS с помощью Rsync

Мануал

Клонирование – это практика копирования точной копии существующего сервера Live Linux с использованием инструмента командной строки rsync .

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

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

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

Лабораторная установка

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

  • Исходный сервер – CentOS 7 – 192.168.2.103
  • Целевой сервер – CentOS 7 – 192.168.2.110

Настройка и требования

Прежде чем продолжить, убедитесь, что вы выполнили следующие условия:

  • На обоих серверах должна быть установлена одна и та же версия операционной системы, то есть CentOS 7.x, CentOS 8.x и т. д.
  • Кроме того, серверы должны иметь идентичные файловые системы и одинаковую конфигурацию жесткого диска, то есть будь то один диск или конфигурация RAID.

ПРИМЕЧАНИЕ. Перед горячим клонированием убедитесь, что вы отключили все службы, связанные с отправкой или записью данных, например базы данных, почтовые службы и т. д.

Шаг 1: Установка инструмента Rsync на CentOS

Чтобы клонирование было успешным, инструмент командной строки rsync должен присутствовать на обоих серверах.

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

К счастью, современные системы поставляются с уже предустановленным rsync.

Чтобы проверить версию установленного rsync, выполните:

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

Шаг 2. Настройка исходного сервера

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

К ним относятся каталоги /boot, /tmp и /dev.

Поэтому создайте файл исключения /root/exclude-files.txt и добавьте следующие записи:

Читайте так же:
Заявление на регулировку пластикова окна

Шаг 3: клонирование сервера CentOS

Команда выполнит клонировани исходного сервера, исключая файлы и каталоги, которые вы определили ранее.

Обязательно замените опцию REMOTE-IP: на IP-адрес сервера назначения.

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

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

Выводы

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

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

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

Если вы желаете уменьшить время, на которое задерживается синхронизация, откройте файл конфигурации SyncThing и исправьте параметр fsWatcherDelayS=»10″ до нужного вам значения, например, до 1 секунды. Выполните эту операцию на каждом узле и перезапустите сервис SyncThing:

Настройка SyncThing завершена, теперь необходимо обеспечить большую защиту и лучшую работу приложения.

Перенос GUI за Nginx

Теперь вы можете поместить пользовательский интерфейс SyncThing за обратный прокси-сервер Nginx с сертификатом Let’s Encrypt:

    по настройке для Debian 9, Ubuntu 16.04, 18.04; по настройке для CentOS 7.

Для того, чтобы пользователи не могли соединяться непосредственно с GUI мимо Nginx, отредактируйте файл /etc/systemd/system/syncthing.service и замените 0.0.0.0:8384 на 127.0.0.1:8384. После этого выполните перезагрузку сервиса:

Настройка лимита Inotify

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector