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

БЭКАПЛЕНД — РЕЗЕРВНОЕ КОПИРОВАНИЕ ДЛЯ ВСЕХ

БЭКАПЛЕНД — РЕЗЕРВНОЕ КОПИРОВАНИЕ ДЛЯ ВСЕХ!

Wiki : Rsync (англ. Remote Synchronization) — программа для UNIX-подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодирование данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию.

Rsync является общепризнанным программным обеспечением, которое работает надежно и быстро. Бэкапленд использует его для оптимального механизма создания резервных копий, а так же по причине его массовой распространенности на серверах, что означает, что вы сможете работать с нашей системой без каких-либо настроек на вашей стороне. Но из каждого правила существуют исключения, поэтому ниже мы предлагаем подробную инструкцию как установить и настроить Rsync на серверах с операционными системами Debian, Ubuntu, Centos и FreeBSD.

Проверка:

Проверьте установлен ли rsync:

выполните команду в ssh: whereis rsync если ответом будет /usr/local/bin/rsync или /usr/bin/rsync то rsync у вас есть, вам его устанавливать не нужно.

Так же можете проверить, просто запустив команду в ssh: rsync или /usr/local/bin/rsync или /usr/bin/rsync если будет ответ, а не ошибка, тогда вам его устанавливать не нужно.

Установка:

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

Для FreeBSD: cd /usr/ports/net/rsync
make install

Для Linux Debian и Ubuntu: apt-get install rsync

Для Centos: yum install -y rsync

Настройка:

Настраивать rsync нужно только в одном случае, если Вы хотите, чтобы наша система создавала резервные копии не через SSH, а через демон rsyncd.

Через файл конфигурации настройки rsyncd вы можете:

  • Задать своего пользователя и пароль
  • Разрешить вход к вам только с определенного IP/хоста (наш хост при заказе мы вам высылаем)
  • Разрешить доступ к конкретным директориям и файлам на вашей системе

Настройка rsync для FreeBSD: cd /usr/local/etc/

cоздаем файл приветствия (не обязательно) echo «Hello from rsync server» > rsyncd.motd
echo «Server Adress: My SuperHost 1.1.1.1» >> rsyncd.motd

создаем файл c именем пользователя и паролем echo «backup:ПАРОЛЬ» > rsyncd.scrt
chmod 0600 /usr/local/etc/rsyncd.scrt

где ПАРОЛЬ тот, что мы выдаем вам при создании в панели управления задания на резервное копирование. В дальнейшем вы можете изменить пароль на свой в файле rsyncd.scrt и на сервере хранения резервных копий в файле /var/www/rc-******/data/rsyncd.pass, где rc-****** ваш логин на сервер с бэкапами.

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

Далее создаем основной конфиг rsyncd.conf

1) cd /usr/local/etc/

2) mv rsyncd.conf rsync.original

3)
cat << EOF >> /usr/local/etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
motd file = /usr/local/etc/rsyncd.motd

uid = root
gid = wheel
max connection = 4

auth users = backup
secrets file = /usr/local/etc/rsyncd.scrt

[root]
path = /
read only = yes
host allow = ssh.bkp177.backupland.com
EOF

4) /usr/local/etc/rc.d/rsyncd restart

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

Делаем отступ с переносом на следующую строку echo «» >> /etc/rc.conf

Добавлем разрешение запускать при старте echo ‘rsyncd_enable=»YES»‘ >> /etc/rc.conf

Настройка rsync для Linux Debian и Ubuntu:

Находите файл /etc/default/rsync
В нем находите строку:
RSYNC_ENABLE=false
и меняете на:
RSYNC_ENABLE=true

Таким образом мы разрешаем при загрузке сервера запустить демон rsyncd

Далее создадим папку для наших файлов: mkdir /etc/rsync/
cd /etc/rsync/

создаем файл приветствия (не обязательно) echo «Hello from rsync server» > rsyncd.motd
echo «Server Adress: My SuperHost 1.1.1.1» >> rsyncd.motd

создаем файл c именем пользователя и паролем echo «backup:ПАРОЛЬ» > rsyncd.scrt
chmod 0600 /etc/rsync/rsyncd.scrt

где ПАРОЛЬ тот, что мы выдаем вам при создании в панели управления задания на резервное копирование. В дальнейшем вы можете изменить пароль на свой в файле rsyncd.scrt и на сервере хранения резервных копий в файле /var/www/rc-******/data/rsyncd.pass, где rc-****** ваш логин на сервер с бэкапами.

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

Далее создаем основной конфиг rsyncd.conf cd /etc/ Обратите внимание на то, что файл rsyncd.conf должен быть расположен в папке /etc/

mv rsyncd.conf rsyncd.old делаем так на всякий случай, вдруг файл такой уже есть

cat << EOF >> /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid

motd file = /etc/rsync/rsyncd.motd

uid = root
gid = root
max connection = 4

auth users = backup
secrets file = /etc/rsync/rsyncd.scrt

[root]
path = /
read only = yes
host allow = ssh.bkp177.backupland.com
EOF

Настройка rsync для Centos 6:

Устанавливаем xinetd (нужен для пуска rsync сервера): yum install -y xinetd

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

Находите файл /etc/xinetd.d/rsync, в нем находите строку:
disable = yes
и меняете на:
disable = no

Перезагружаем сервис xinetd: /etc/init.d/xinetd restart

Добавляем xinetd в автозапуск: chkconfig xinetd on

Конфиг создаем такой же как и для Centos 7 (смотри ниже).

Настройка rsync для Centos 7:

Включаем в автозагрузку systemctl enable rsyncd.service

Запускаем rsyncd демон systemctl start rsyncd.service

Далее создадим папку для наших файлов: mkdir /etc/rsync/
cd /etc/rsync/

создаем файл приветствия (не обязательно) echo «Hello from rsync server» > rsyncd.motd
echo «Server Adress: My SuperHost 1.1.1.1» >> rsyncd.motd

создаем файл c именем пользователя и паролем echo «backup:ПАРОЛЬ» > rsyncd.scrt
chmod 0600 /etc/rsync/rsyncd.scrt

где ПАРОЛЬ тот, что мы выдаем вам при создании в панели управления задания на резервное копирование. В дальнейшем вы можете изменить пароль на свой в файле rsyncd.scrt и на сервере хранения резервных копий в файле /var/www/rc-******/data/rsyncd.pass, где rc-****** ваш логин на сервер с бэкапами.

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

Далее создаем основной конфиг rsyncd.conf

cd /etc/ Обратите внимание на то, что файл rsyncd.conf должен быть расположен в папке /etc/

mv rsyncd.conf rsyncd.old делаем так на всякий случай, вдруг файл такой уже есть.

cat << EOF >> /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid

motd file = /etc/rsync/rsyncd.motd

uid = root
gid = root
max connection = 4

auth users = backup
secrets file = /etc/rsync/rsyncd.scrt

[bkpl]
path = /
read only = yes
host allow = ssh.bkp177.backupland.com
EOF

Применяем настройки
для Centos 7 systemctl restart rsyncd.service для Centos 6 service xinetd restart

Если у вас на сервере установлен Firewall вам нужно разрешить входящие соединение на порт 873

Описание полей файла конфигурации rsyncd.conf

Текст конфигурации:

pid file = /var/run/rsyncd.pid#pid файл хранящий ID процесса
motd file = /usr/local/etc/rsyncd.motd#файл приветствия
uid = root#работа под правами этого пользователя*
gid = wheel#работа с правами этой группы*
max connection = 4#кол-во коннектов со стороны сервиса
auth users = backup#логин пользователя для доступа извне
secrets file = /usr/local/etc/rsyncd.scrt#файл с логином и паролем для доступа извне
[bkpl]#секция, в которой описано что можно делать
path = /#Какую папку можно бэкапить
read only = yes#Разрешено только бэкапить, восстановить нельзя будет
host allow = ssh.bkp177.backupland.com#сервер, где будут храниться резервные копии

Внимание! Вместо ssh.bkp177.backupland.com необходимо указать тот хост, который Вы получили при регистрации. Аналогично, путь /usr/local/etc/ зависит от того, какая установлена операционная система.

* Если вы не собираетесь резервировать весь сервер, тогда права root вы можете заменить на права пользователя, файлы которого вы будете бэкапить.

Копируем с RSync: основные примеры синхронизации файлов

RSync это быстрый и чрезвычайно универсальный инструмент для синхронизации (копирования) файлов. Его самое основное преимущество это передача только изменившиеся части файла, а не файла целиком, что несомненно отражается на скорости копирования/синхронизации. А если при копировании произойдет какой-то сбой, то достаточно перезапустить команду и копирование будет продолжено с того же места.

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

Сам сервис работает на SSH протоколе по умолчанию, но может работать и на собственном протоколе rsyncd, но обо всем по порядку.

Установка

По умолчанию rsync есть не везде, поэтому если вы получили ошибку «bash: rsync: command not found» — значит его нужно установить (как на локальной, так и на удаленной машине):

Базовый синтаксис

Основные опции RSync

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

Базовые опции:

Работа с файлами:

Настройка синхронизации/подключения/передачи файлов:

Отображение/результат:

Опции полезные для создания инкрементальных резервных копий:

Теперь пройдемся по базовым примерам.

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

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

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

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

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

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

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

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

Важно указывать полный путь на удаленном сервере, иначе rsync попытается скопировать каталог «2021» в корень удаленного сервера.
Еще важно указывать полный путь до удаленного сервера, так как, к примеру, копируя файл «file.txt» на сервер указав путь /home/user/somedir, каталог somedir не будет создан, вместо этого файл file.txt скопируется на сервер под именем somedir. Чтобы избежать этого используйте путь полный путь /home/user/somedir / .

Читайте так же:
Датчики регулировки температуры отопления на домах

Если мы хотим немного сжать файлы при передачи (к примеру у нас медленный интернет), можно использовать ключ -z:

Но важно понимать, что сжатие имеет смысл использовать там где это нужно, так как в новых версиях ssh уже использует сжатие передаваемых данных, тратить ресурсы CPU не стоит, особенно на слабых машинах или NAS серверах.

Как скопировать/синхронизировать с удаленного сервера на компьютер

В данном примере мы копируем файл filefromsrv в каталог, в котором находимся.

Как указать другой порт ssh и ключ?

С помощью опции -e (она же —rsh). Вот как скопировать файл с компьютера на сервер у которого не стандартный ssh порт:

А вот как можно указать ключ авторизации и порт:

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

Я хочу видеть прогресс копирования/синхронизации

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

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

Если мы хотим видеть наиболее интересный вывод, то нам в этом поможет ключ —progress. Вот пример:

Некоторые могут советовать ключ -P, но имейте в виду, -P включает в себя ключ —partial и —progress одновременно (что в целом не так страшно).

Как ограничить скорость передачи файлов?

Нужно указать опцию —bwlimit=SPEED, где SPEED это скорость в Кбайт в секунду:

Полезно бывает на слабом интернете с большими файлами.

Как исключить некоторые файлы или включить определенный тип файлов?

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

Конечно можно указать одну директорию:

Еще мы можем исключить файлы с определенным расширением:

Саму опцию мы можем использовать несколько раз:

Для копирования определенного типа файлов (да и не только) мы можем использовать опцию —include. Используется она точно так же, как и exclude. Вот пример, в котором я загружаю на сервер только все файлы с расширением .sql:

Исключения с помощью .rsync-filter

Для более гибкой настройки копирования (в случае регулярного копирования это будет очень полезно) все исключения/включения можно оформить в файле .rsync-filter (это появилось в более поздних версиях rsync).

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

Ниже приведен один из примеров настройки исключений в файле .rsync-filter с комментариями:

Для того, чтобы rsync заметил файл .rsync-filter, достаточно указать опцию -F:

В итоге на сервер будут скопированы только эти файлы:

Кстати, если мы не хотим чтобы сам .rsync-filter не копировался, то -F нужно будет указать дважды

Другие полезные опции

—delete / —delete-after / —del (—delete_during)

Если мы делаем ежедневные резервные копии и не хотим засорять удаленный сервер лишними файлами (которых уже нет в источнике), то мы можем использовать опцию —delete:

В результате будет удален файл, которого больше нет в директории источника (в somedir):

По умолчанию, rsync сначала выполняет удаление файлов перед копированием для уверенности, что хватит свободного места на приемной стороне (т.е. использует по умолчанию —delete-before). Если мы хотим удалять файлы после копирования, используйте параметр —delete-after.

Если мы хотим хотим удалять файлы в процессе передачи, а не перед, то можно использовать опцию —del (—delete_during). Это поможет сэкономить немного ресурсов и времени.

Кстати, это не все «delete» параметры, которые есть, вот их полный список с кратким описанием:

А если вам по какой-то причине не нужно обновлять файлы на принимающем сервере, вместо опции —del.. можно использовать опцию —ignore-existing.

—no-perms —no-owner —no-group

Иногда нам может потребоваться не переносить атрибуты (права файлов, пользователя и группу пользователя). Для этого мы можем воспользоваться опциями —no-p —no-o —no-g (оно же —no-perms —no-owner —no-group):

Важно соблюдать порядок (особенности работы «—no-OPTION» в rsync).

—inplace

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

Читайте так же:
Регулировка давления воды в квартире кранами

-W, —whole-file

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

Что в итоге?

Я постарался описать наиболее частые примеры использования rsync, и сказу сразу: это только минимум того, что может эта утилита.

Если вы где-то нашли ошибку, или есть еще какие-то интересные способы использования rsync — пишите, я добавлю их в статью ;).

Rsync centos 7 параметры синхронизации

  • О сайте Настройка Linux, Unix операционных систем
  • Мои контакты
  • Статьи

Еще горстка материалов:

  • 29.07.14 — Настройки Linux, Unix подобных систем
  • 29.07.14 — Программное зеркало gmirror (raid1)
  • 30.07.14 — Полезные команды Linux
  • 08.12.14 — Настройка rsync-сервера

Утилита rsync

Автор: Сергей Кулешов

Создано 19.08.2014 11:56

  • Еще статья Настройка rsync-сервера

Rsync — утилита для Unix-систем, которая используется для синхронизации файлов и папок из одного месторасположения в другое. Rsync была создана как замена для rcp и scp.

Скорость: Первоначально rsync реплицирует все содержимое между источником и местом назначения. Далее rsync передает только изменившиеся блоки или биты в место назначения.

Безопасность: rsync включает в себя шифрование данных при передаче с использованием протокола SSH

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

Синтаксис:

$ rsync options source destination

Где source — источник, destination — место назначения, могут быть как локальными, так и удаленными. В случае использования с удаленными объектами указывается логин, имя сервера и путь.

1. Синхронизация двух директорий на одном сервере

Для синхронизации двух директорий на одной машине используем ключи -zvr:

z — включаем сжатие

r — режим рекурсии.

$ rsync -zvr /home/user/server_test/ /home/user/test

sending incremental file list

created directory /home/user/test

sent 565 bytes received 100 bytes 1,330.00 bytes/sec

total size is 520 speedup is 0.78

Сравнив копии увидим, что rsync изменил метки времени и группу владельца во время синхронизации

2. Сохранение временных меток в процессе синхронизации

Для этого используется опция -a, которая показывает режим архива и включает в себя:

— сохраняет символические ссылки

— сохраняет разрешения (permissions)

— сохраняет временные метки

— сохраняет владельца и группу

3. Синхронизация файлов с локальной машины на удаленную

$rsync -rvz /home/user/test/ Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. :/home/admin/test2/

Здесь необходимо указать имя пользователя, ip-aдрес сервера и путь.

В данном примере мы указали ключ -r вместо -a, т.к. у пользователя user нет прав на создание файлов от имени рута (а синхронизируем мы именно такие файлы).

4. Синхронизация с удаленной машиной имеющий нестандартный порт ssh

Для этого понадобиться ключ -е с указание номера порта, например -e=’ssh -p 4439′

$rsync -e=’ssh -p 4439′ -rvz /home/user/test/ Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. :/home/admin/test2/

5. Не перезаписывать измененные данные в месте назначения (destination)

Для этого используем опцию -u. В примере файл «readme» изменен на удаленной стороне:

$rsync -avzu Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. :/home/admin/test2 /home/user/test

6. Синхронизация только дерева каталогов (без файлов)

Используем опцию — d для синхронизации дерева каталогов, без синхронизации файлов находящихся внутри каталогов (файлы с корневой директории все равно синхронизируются)

7. Вывод процесса синхронизации на экран или файл

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

Для этого импользуется опция —progress

8. Удаление файлов в точке назначения.

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

Для этого используется опция —delete

$rsync -avz —delete Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. :/home/admin/test2/ /home/user/test

9. Не создавать новые файлы на конечном сервере

Если хотим обновлять (синхронизировать) только сущестующие файлы, не копируя вновь созданные, то для этого понадобится опция —existing

Для примера, создаем на источнике файл newfile.txt и производим синхронизацию:

$rsync -avz —existing Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. :/home/admin/test2/ /home/user/test

10. Просмотр разницы между источником и приемником

Для этого используется опция -i

$rsync -avzi Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. :/home/admin/test2/ /home/user/test

> — показывает что файл был передан (синхронизирован).

f — показывает что это файл.

s — показывает изменение размера.

Читайте так же:
Как отрегулировать масляный обогреватель

t — показывает изменение штампа времени.

o — изменение владельца

g — изменение группы.

11. Включение/исключение файлов/директорий с использованием шаблонов

Rsync позволяет задавать шаблоны для отбора нужных файлов и директорий.

Скопируем все файлы начинающиеся с буквы «n»

$rsync -avz —include ‘n*’ —exclude ‘*’ Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. :/home/admin/test2/ /home/user/test

—include — это то, что мы включаем в синхронизацию

—exclude — это то, что мы исключаем

12. Коды ошибок

1 — Синтаксическая ошибка или ошибка использования

2 — Несовместимость протоколов

3 — Ошибки выбора входных/выходных файлов и каталогов

4 — Запрошенное действие не поддерживается: была сделана попытка работы с 64-битными файлами на платформе, которая их не поддерживает; или указан параметр, который поддерживается только клиентом и не поддерживается сервером.

Настройка и использование Rsync Server

Утилита rsync позволяет синхронизировать содержимое двух каталогов как для локальной системы, так и удаленных серверов. Это может использоваться как для резервного копирования, так и поддержания в актуальном состоянии нод кластера.

Использование Rsync Server позволит более тонко настроить работу утилиты и оптимизировать сам процесс синхронизации.

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

Установка и запуск

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

CentOS 8

yum install rsync rsync-daemon

systemctl enable rsyncd —now

CentOS 7

yum install rsync

systemctl enable rsyncd —now

Ubuntu

apt-get install rsync

Открываем следующий файл:

Настройка

Открываем конфигурационный файл rsync:

И настраиваем его, примерно, следующим образом:

max connections = 10
exclude = lost+found/
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 *.rar *.7z *.mp3 *.jpg

[data1]
path = /data1/
comment = Public folders
read only = yes
list = yes
auth users = rsync_d1
secrets file = /etc/rsyncd.scrt
hosts allow = localhost 192.168.0.15 192.168.0.20
hosts deny = *

[data2]
uid = root
gid = root
path = /data2/
comment = Private folders
read only = yes
list = yes
auth users = rsync_d2, backup
secrets file = /etc/rsyncd.scrt
hosts allow = localhost 192.168.0.16 192.168.0.21
hosts deny = *

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

  • max connections — максимальное число одновременных подключений. Стоит задать, чтобы не перегружать сервер.
  • exclude — папки, которые стоит исключить из синхронизации. В конкретном примере каталог для размещения восстановленных после проверки диска файлов.
  • dont compress — указываем, какие файлы не нужно сжимать при отправке. Имеет смысл указать те, сжатие которых не даст результата, например, архивы, сжатые аудио и изображения.

а также каждый ресурс настраивается отдельно (в нашем примере data1 и data2):

  • uid — пользователь, от которого будет выполнена синхронизация для конкретного ресурса.
  • gid — группа, от которой будет выполнена синхронизация для конкретного ресурса.
  • path — путь до ресурса, для которого выполняется синхронизация.
  • comment — описание для удобства.
  • read only — режим для чтения; позволяет защитить данные от удаления или изменения.
  • list — разрешает или запрещает чтения содержимого каталога. Если запрещено (no), синхронизация может выполняться для конкретно перечисленных файлов.
  • auth users — проверка подлинности, вводом логина с паролем.
  • secrets file — файл, в котором размещены логин и пароль.
  • hosts allow — перечисление хостов, с которых разрешено обращаться к rsync серверу.
  • hosts deny — перечисление хостов, с которых запрещено обращаться к rsync серверу (в данном примере, со всех, кроме разрешенных).

Создаем файл для аутентификации:

rsync_d1:password1
rsync_d2:password2
backup:password3

* где rsync_d1:password1 — соответственно, пользователь rsync_d1 с паролем password1.

В целях безопасности, устанавливаем доступ только для владельца:

chmod 600 /etc/rsyncd.scrt

Перезапускаем сервис одной из команд:

systemctl restart rsyncd

service rsyncd restart

Добавляем порты в брандмауэр.

firewall-cmd —permanent —add-port=873/tcp

firewall-cmd —permanent —add-port=22/tcp

iptables -I INPUT 1 -p tcp —dport 873 -j ACCEPT

iptables -I INPUT 1 -p tcp —dport 22 -j ACCEPT

Запуск клиента

Проверка на локальном компьютере

Сначала выполним следующую команду на нашем сервере:

rsync -avv —progress rsync_d1@localhost::data1 /tmp/

* данная команда выполнит синхронизацию нашего ресурса data1 с каталогом /tmp.

Проверка на удаленном компьютере

Устанавливаем rsync, если еще не установлен:

yum install rsync

apt-get install rsync

* первая команда для CentOS, вторая — Ubuntu.

rsync -avv rsync_d1@192.168.0.5::data1 /tmp/

* где 192.168.0.5 — IP-адрес rsync сервера.

Пример готового скрипта для синхронизации папок

Скрипт довольно прост:

rsync -a —delete-after —password-file=$password_file $user@$ip::$source $destination

  • password_file — пароль, в котором будет храниться пароль.
  • user — учетная запись для авторизации.
  • ip — IP-адрес сервера rsync.
  • source — имя ресурса на сервере.
  • destination — каталог, в который синхронизируем файлы.

После создаем файл с паролем:

* в данном файле указываем только пароль без имени учетной записи.

После задаем права:

Читайте так же:
Бытовая водяная насосная станция регулировка реле холостого хода

chmod 600 /etc/rsyncd.scrt

Автоматизировать синхронизацию можно с помощью CRON:

0 */1 * * * /scripts/syncing.sh

* где /scripts/syncing.sh — наш скрипт. В данном примере задание будет выполняться каждый час.

Ключи запуска rsync

rsync <опции> <источник> <назначение>

Список и описание опций:

* самый свежий список ключей rsync можно посмотреть командой man rsync.

Rsync на Windows

Реализация rsync для Windows носит название cwRsync (не является аналогом программы — по сути, это утилита Rsync + библиотека Cygwin). Скачать ее можно на официальном сайте. Для загрузки доступны платная и бесплатная версии. Последняя не позволит поднять Rsync-сервер, получать поддержку, обновления безопасности и возможность работать в графическом интерфейсе.

Запуск в качестве сервера

Мы будем использовать бесплатную поставку для поднятия сервера. Переходим на страницу загрузки backuppc и дожидаемся скачивание архива. Создаем в корне системного диска папку, например, C:Rsyncd, распаковываем содержимое загруженного архива в созданную папку.

Находим в корне содержимого файл rsyncd.conf и открываем его в блокноте. Добавляем следующие строки:

[data1]
path = /cygdrive/d/backup
read only = false
transfer logging = yes

[data2]
path = /cygdrive/d/Папки пользователей
read only = false
transfer logging = yes
strict modes = false
auth users = home
secrets file = /cygdrive/c/Rsyncd/rsyncd.secrets

* в данном примере мы создали группы настроек data1 для папки D:backup и data2 для D:Папки пользователей. Регистр важен! Для второй папке для синхронизации требуется аутентификация.
* синтаксис для настройки аналогичен описанному выше для Linux. Только пути пишутся, начиная с /cygdrive/<буква диска>.

Регистрируем rsync в качестве службы — для этого открываем командную строку от администратора и выполняем команду:

c:rsyncdbincygrunsrv -I "RsyncServer" -p /cygdrive/c/rsyncd/bin/rsync.exe -a "—config=/cygdrive/c/rsyncd/rsyncd.conf —daemon —no-detach" -o -t auto -e "CYGWIN=nontsec binmode" -1 /cygdrive/c/rsyncd/rsyncd-stdin.log -2 /cygdrive/c/rsyncd/rsyncd-stderr.log -y tcpip -f "Rsync service"

* где c:rsyncd или /cygdrive/c/rsyncd — каталог, куда мы распаковали скачанный архив.

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

Запуск службы Rsyncd

Пробуем выполнить локальную синхронизацию. В командной строке переходим в каталог установки rsync:

rsync.exe -avv —progress 127.0.0.1::data1 /cygdrive/c/Temp

* данная команда синхронизирует содержимое модуля data1 (в нашей настройке это папка D:backup) в папку C:Temp (если ее нет, нужно создать перед выполнением команды).

Или в обратном направлении:

rsync.exe -avv —progress /cygdrive/c/Temp 127.0.0.1::data1

Запуск клиента

Процедура использования клиента cwRsync аналогична описанному выше для Linux. Скачиваем архив программы и распаковываем его. Запускаем командную строку и переходим в каталог bin (находится в папке, куда была распакована программа).

rsync.exe -avv —progress admin@192.168.0.15::data1 /cygdrive/c/temp

* обратите внимание на путь назначения — чтобы обратиться к диску C мы написали /cygdrive/c. Итоговое назначение — C:temp.

Копирование с помощью SSH:

rsync.exe -avv -e "./ssh -p 22" —progress admin@192.168.0.15:/data/ /cygdrive/c/temp

* обратите внимание, что мы пишем не ssh, а ./ssh, иначе, если мы используем 64-х битную систему и бесплатный пакет cwRsync, система не найдет путь до ssh и выдаст ошибку Failed to exec ssh: No such file or directory.

Права на папки и файлы

Rsync в Windows не умеет копировать права для файлов и папок. В результате, мы получим либо копию с неправильными ACL-правами, либо они будут назначены неправильно (права будут выданы по хаотичному алгоритму). Чтобы решить данную проблему после клонирования, можно воспользоваться утилитой robocopy — она входит в состав Windows, начиная с 7-ки.

Команда, которая позволит выполнить исправление прав:

robocopy c:test d:backup /MIR /SEC /SECFIX

* в данном примере мы возьмем папку c:test в качестве источника и отзеркалируем его d:backup. Ранее скопированные данные не будут копироваться вновь, но будут исправлены права.

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

Простая команда для синхронизации двух каталогов:

rsync -a —delete-after user@192.168.0.15::data_source /data_destination

Команда для резервного копирования:

rsync -ab —delete-after user@192.168.0.15::data_source /data_destination

Выполнение синхронизации по SSH:

rsync -a —delete-after -e "ssh -p 22" user@192.168.0.15:/data_source /data_destination

* по SSH запросы идут не через rsync server. В данном примере подключение будет выполнено по 22 порту, под учетной записью user.

Копирование файлов на удаленную машину:

rsync -a —delete-after /data_destination user@192.168.0.15::data_source

Синхронизация в обе стороны (запускаем две команды по очереди):

rsync -a —delete-after user@192.168.0.15::data_source /data_destination

rsync -a —delete-after /data_destination user@192.168.0.15::data_source

Синхронизация файлов по маске:

rsync -a —include='*.txt' —exclude='*' user@192.168.0.15::data_source /data_destination

* в этом примере будут синхронизированы только файлы с расширением txt.

rsync -a —exclude='folder/*' user@192.168.0.15::data_source /data_destination

Возможные проблемы

rsync: change_dir "/" failed: Permission denied

Причина: нет прав на синхронизируемые файлы.

Решение: задать правильного пользователя (uid) в настройках ресурса на стороне сервера.

rsync: failed to connect to x.x.x.x (x.x.x.x): No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(122)

Причина: не доступен удаленный хост.

Решение: проверить, что хости доступен по сети. Проверить настройку брандмауэра.

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