- Синхронизация файлов между двумя Windows серверами
- Синхронизация файлов между Windows серверами RSync
- После запуска демона появится окно Windows Firewall и процесс в менеджере задач.
- Необходимо сформировать подобные строки для каждой папки, и указывать их одна за одной в этом файле.
- Как лучше реализовать непрерывную синхронизацию файлов и прав доступа к ним между двумя серверами на Linux и Windows?
- IT Записки
- cwRsync — синхронизация файлов между Windows серверами с примерами.
Синхронизация файлов между двумя Windows серверами
Обычно для синхронизации файлов между Windows серверами люди используют robocopy. В принцыпе robocopy отлично с этой задачей справляется, но только до тех пор пока Ваши сервера находсятся в одной подсети.
Команда выглядит следующим образом:
Небольшое пояснение по используемым опциям:
- /MIR — (сокращенно от mirror) означает, что robocopy должно в точности отобразить исходную папку на новом сервере. Означает, что файлы на новом сервере могут быть удалены, если они отсутствуют на исходящем сервере.
- /Z — указывает утилите, что в случает облома связи файлы нужно продолжить копировать, а не начинать заново.
- /XA:H — заставляет утилиту игнорировать системные файлы. Для винды, как правило, системные файлы являются очень нужными и важными, поэтому ОС их любит лочить для чтения. Очень мало толку от таких файлов на новом сервере. Лучше их исключить.
- /W:5 — казывает задержку в секундах между попытками счтать файл заново в случае неудачи.
Это очень хорошо работает, если Ваши сервера находтся в одном датацентре и могу достучаться друг к другу на прямую.
Если же Ваши сервера находтся в разных сетях или соединение между ними ограничено фаерволом, то подмонтировать расшареные папки Вы не сможете (или сможете, но с геморроем).
В таком случае на помощь приходит ‘BitTorrent Sync’, который скачать можно по следующей ссылке:
http://filehippo.com/download_bittorrent_sync/
Альтернативой может стать ссылка на мой сервер.
Устанавливается он за 2 секунды. Интерфейс довольно понятный. Работает быстро. Нужно на исходном сервере указать какую папку вы хотите расшарить и добавить ее в такой же клиент на новом сервере.
После добавления папки в клиент на новом сервере, нужно вернуться на исходящий сервер и подтвердить доступ к ней.
Синхронизация файлов между Windows серверами RSync
В процессе создания кластера стал вопрос: чем же можно обеспечить синхронизацию файлов и папок на отдельных узлах? После недолгих поисков всевозможных готовых решений наткнулся на известную утилиту, работающую под Unix – Rsync. У многих администраторов появилась необходимость синхронизировать каталоги между Unix-Windows серверами. Так получил жизнь проект cwRsynс. Суть этого проекта в том, что утилита Rsync запускается по Windows с помощью библиотеки cygwin.
В моем случае возможность взаимодействия с Unix серверами в перспективе очень радовала. Также отзывы админов о работе Rsync под Unix были очень положительными, и я решил попробовать.
В этой статье мы рассмотрим каким образом настраивается синхронизация жесткого диска с помощью cwRsynс. Русскоязычных статей по работе с cwRsync я не нашел – все дружно копируют четыре шага по установке, и не касаются работы и настройки. Основную массу информации я черпал из http://rsync.samba.org, ведь параметры запуска для Rsync и cwRsync остаются одинаковыми.
Принцип синхронизации с помощью cwRsync состоит в следующем: на главном сервере (в нашем случае Сервер№1) запускается демон cwRsync при старте системы. В конфиге указывается к каким ресурсам будет даваться доступ. Клиент конфигурируется на втором сервере (Сервер№2). С определенной периодичностью на втором сервере запускается клиент, который соединяется с сокетом первого сервера, после чего происходит синхронизация. Взаимодействие происходит по локальным IP адресам:
Пример: Схема синхронизации cwRsync.
1. Установка cwRsync.
Для начала необходимо скачать и установить утилиту cwRsync. Установщик можно скачать отсюда.
Нужно выбрать последнюю версию. Перед установкой стоит убедиться, что совместима с конфигами старой версии.
Нам необходимо установить его на все узлы кластера. Процесс установки совсем прост: все значения можно оставить по умолчанию. cwRsync установиться в c:\Program Files\cwRsync\.
После установки можно выполнить следующие рекомендации:
У меня после установки проблем с кодировкой либо работой не наблюдалось. Также далее при конфигурировании я использовал прямые пути. Поэтому рекомендации можно не выполнять.
2. Работа с cwRsync на Сервер№1:
Для начала необходимо создать конфиг. файл. Создадим в c:\Program Files\cwRsync\bin\ папки conf и log. В папке conf создадим файл rsyncd.conf следующего содержания:
Примечание:
Зато когда указываешь имя папки в параметрах клиента, то всё работает.
Далее создадим bat файлы для запуска демона: создадим в папке conf файл rsync_server_start.bat с таким содержимым:
Полный перечень возможных параметров:
После запуска демона появится окно Windows Firewall и процесс в менеджере задач.
Windows Firewall: Блокирование rsync демона.
Необходима нажать Unblock. Если всё работает нормально, то нужно добавить запуск bat файла в Планировщик Задач:
Планировщик задач: Запуск демона cwRsync при старте сервера.
Таким образом, сервер cwRsync будет запускаться при старте узла.
3. Работа с cwRsync на Сервер№2:
Установим cwRsync на Сервер№2. Создадим в c:\Program Files\cwRsync\bin\ папки bat и log. В папке bat создадим следующий файл с именем sync_all.bat. В этом файле создадим записи для синхронизации каждой необходимой папки. Следует включать исключения для папок с логами и статистикой. Вот общий вид строки.
Необходимо сформировать подобные строки для каждой папки, и указывать их одна за одной в этом файле.
Примечание:
Каждая запись состоит из следующих частей
Обратите внимание на последний слеши в путях, так как они имеют значение для rsync. Если на конце исходной директории стоит «/», то это означает копирование содержимого директории; отсутствие слеша означает копирование директории и ее содержимого.
Если не указать /, то на клиент в папке создастся папка с файлами. Иначе просто её содержимое.
При первом запуске синхронизации на Cервер№2, также появится сообщения от брандмауэра Windows о блокировании Rsync. Необходимо нажать Unblock.
Вот список всех допустимых параметров:
Как лучше реализовать непрерывную синхронизацию файлов и прав доступа к ним между двумя серверами на Linux и Windows?
Имеются два удалённых друг от друга сервера на Ubuntu 16.04 и Win2012r2.
Оба втянуты в один домен с AD, на обоих имеются файловые шары с множеством различных прав доступа через AD.
В шарах порядка 3млн. файлов в 400тыс. директорий. Всего чуть более 3ТБ данных.
Всё это дело надо непрерывно синхронизировать с минимальными задержками между серверами хотя бы в одну сторону (с линукс на винду) и, желательно, бесплатными решениями.
Рассмотренные варианты:
Resilio Sync — не умеет синхронизировать расширенные атрибуты (xattr, ACLs), есть Connect, но там платно уже,
Syncthing — тоже не умеет синхронизировать расширенные права доступа,
rsync — всё отлично синхронизирует, но долго строит дерево каталогов,
lsyncd — нельзя синхронизировать с виндой, пробовал монтировать виндовую шару через CIFS, но там нет inotify и ничего не получилось,
osync — тоже не получилось синхронизировать с примонтированной виндовой CIFS директорией, выдаёт
Unison — не умеет синхронизировать расширенные права. Хотя двусторонняя синхронизация на тесте с параметрами -repeat watch -fastcheck true быстрее всех остальных, но на больших объёмах данных я так и не дождался окончания начального построения,
robocopy — встроенная утилита в винде, аналогична rsync в линуксе, на нём и остановился пока, т.к. там есть встроенные параметры мониторинга изменений в исходной шаре.
Запускаю в несколько процессов команды на каждую шару (для ускорения):
/MON:1 — мониторит изменения источника за 1 минуту после окончания синхронизации и перезапускает процесс.
Проблема та же, что и у rsync — долгое построение дерева, отключить это, как в lsyncd или Unison, по видимому никак нельзя. Если кто знает, как можно отключить первоначальное построение дерева и сразу передавать изменения, подскажите, пожалуйста.
То что без начальной синхронизации менее надёжно знаю, планирую раз в сутки полностью прогонять rsync или robocopy.
Есть ли что-то ещё, что умеет синхронизировать так же и расширенные атрибуты, без первичного построения дерева?
Robocopy умеет как-то мониторить изменения файловой системы в линуксовой шаре, под линукс ничего, что так же работало бы с шарами, я не нашёл, только lsyncd и его производные, следящие за inotify.
В отдалённой перспективе снести винду и сделать везде lsyncd или zfs репликацию, но это дело будущего, сейчас надо решение в текущей конфигурации.
IT Записки
cwRsync — синхронизация файлов между Windows серверами с примерами.
В процессе создания кластера стал вопрос: чем же можно обеспечить синхронизацию файлов и папок на отдельных узлах? После недолгих поисков всевозможных готовых решений наткнулся на известную утилиту, работающую под Unix – Rsync. У многих администраторов появилась необходимость синхронизировать каталоги между Unix-Windows серверами. Так получил жизнь проект cwRsynс. Суть этого проекта в том, что утилита Rsync запускается по Windows с помощью библиотеки cygwin.
В моем случае возможность взаимодействия с Unix серверами в перспективе очень радовала. Также отзывы админов о работе Rsync под Unix были очень положительными, и я решил попробовать.
В этой статье мы рассмотрим каким образом настраивается синхронизация жесткого диска с помощью cwRsynс. Русскоязычных статей по работе с cwRsync я не нашел – все дружно копируют четыре шага по установке, и не касаются работы и настройки. Основную массу информации я черпал изhttp://rsync.samba.org, ведь параметры запуска для Rsync и cwRsync остаются одинаковыми.
Принцип синхронизации с помощью cwRsync состоит в следующем: на главном сервере (в нашем случае Сервер№1) запускается демон cwRsync при старте системы. В конфиге указывается к каким ресурсам будет даваться доступ. Клиент конфигурируется на втором сервере (Сервер№2). С определенной периодичностью на втором сервере запускается клиент, который соединяется с сокетом первого сервера, после чего происходит синхронизация. Взаимодействие происходит по локальным IP адресам:
Пример: Схема синхронизации cwRsync.
1. Установка cwRsync.
Для начала необходимо скачать и установить утилиту cwRsync. Установщик можно скачать отсюда.
Нужно выбрать последнюю версию. Перед установкой стоит убедиться, что совместима с конфигами старой версии.
Нам необходимо установить его на все узлы кластера. Процесс установки совсем прост: все значения можно оставить по умолчанию. cwRsync установиться в c:\Program Files\cwRsync\.
После установки можно выполнить следующие рекомендации:
У меня после установки проблем с кодировкой либо работой не наблюдалось. Также далее при конфигурировании я использовал прямые пути. Поэтому рекомендации можно не выполнять.
2. Работа с cwRsync на Сервер№1:
Для начала необходимо создать конфиг. файл. Создадим в c:\Program Files\cwRsync\bin\ папки conf и log. В папке conf создадим файл rsyncd.conf следующего содержания:
use chroot = yes – запуск rsync в chroot, для пущей безопасности;
[drive_с] – название модуля;
uid – должен соответствовать id владельца каталога, в который мы собираемся записывать;
path – полный путь до каталога, в который будем записывать;
list = no – не показывать секцию [push] в листинге;
comment – комментарий;
read only = false – открыть секцию на запись;
hosts allow – разрешить доступ к секции push только для определённых адресов;
auth users = push – разрешить доступ только пользователю push;
secrets file – файл соответствия имени пользователя определённому паролю.
Далее создадим bat файлы для запуска демона: создадим в папке conf файл rsync_server_start.bat с таким содержимым:
—config rsyncd.conf – указываем, где находится файл конфигурации.
—daemon – запуск демона
—log-file – включение ведения лога
—address – указываем , какой адрес слушать
Полный перечень возможных параметров:
После запуска демона появится окно Windows Firewall и процесс в менеджере задач.
Windows Firewall: Блокирование rsync демона.
Необходима нажать Unblock. Если всё работает нормально, то нужно добавить запуск bat файла в Планировщик Задач:
Планировщик задач: Запуск демона cwRsync при старте сервера.
Таким образом, сервер cwRsync будет запускаться при старте узла.
3. Работа с cwRsync на Сервер№2:
Установим cwRsync на Сервер№2. Создадим в c:\Program Files\cwRsync\bin\ папки bat и log. В папке bat создадим следующий файл с именем sync_all.bat. В этом файле создадим записи для синхронизации каждой необходимой папки. Следует включать исключения для папок с логами и статистикой. Вот общий вид строки.
Необходимо сформировать подобные строки для каждой папки, и указывать их одна за одной в этом файле.
Каждая запись состоит из следующих частей
-a равносильно –rlptgoD
r — рекурсивный режим
l — пересоздание symlinks, это значит, что символические ссылки будут так же переноситься
p – перенос прав
t — передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации
g — установить группу конечного файла таким же, как и у исходного
o — установить владельца конечного файла таким же, как и у исходного
v — verbose. Вывод сообщений в терминал.
—delete — удаляет файлы, которых нет в источнике.
—exclude – указываем то, что синхронизировать не нужно.
user_id – uid, описанный на сервере
@192.168.1.5 – IP адрес сервера
::drive_d /Folder_sync1/ – Метка сервера и путь
«/cygdrive/d/Folder_sync1/» — куда
>»C:\Program Files\cwRsync\bin\log\Folder_sync1.log» — весь вывод в файл
Обратите внимание на последний слеши в путях, так как они имеют значение для rsync. Если на конце исходной директории стоит «/», то это означает копирование содержимого директории; отсутствие слеша означает копирование директории и ее содержимого.
Если не указать /, то на клиент в папке создастся папка с файлами. Иначе просто её содержимое.
При первом запуске синхронизации на Cервер№2, также появится сообщения от брандмауэра Windows о блокировании Rsync. Необходимо нажать Unblock.
Вот список всех допустимых параметров:
После этого необходимо добавить бат файл в Планировщик Задач с запуском через каждые 10-20 минут либо другой, необходимый промежуток времени.