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

Настройка синхронизации файлов между серверами с помощью SyncThing

Настройка синхронизации файлов между серверами с помощью SyncThing

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

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

Задача

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

В более сложных конфигурациях в группе может быть несколько серверов, тогда настройка синхронизации «каждый с каждым» весьма утомительна — при добавлении к группе из N серверов еще одного, вам необходимо произвести 2xN настроек — на каждом из существующих серверов с новым и на новом сервере с существующими. Конечно, эта задача может быть автоматизирована с помощью средств управления инфраструктурой как кодом (Ansible, Chef, Puppet), но само решение, где необходимо настраивать взаимосвязь каждый с каждым выглядит весьма неудобно.

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

Далее мы рассмотрим, как с помощью SyncThing настроить синхронизацию файлов между несколькими серверами. Мы будем использовать операционную систему Linux. Руководство подойдет для любого дистрибутива, который использует systemd — Debian 9, Ubuntu 16.04, Ubuntu 18.04, CentOS 7 и т.п.

Как работает SyncThing

Важно понимать несколько ключевых принципов работы SyncThing, прежде чем двигаться дальше.

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

Задержка синхронизации. Для оптимизации производительности SyncThing задерживает синхронизацию (по умолчанию — 10 секунд), что может быть изменено, но установить задержку меньше 1 секунды невозможно.

Принцип работы. После старта серверы могут обнаруживать друг друга. Для добавления пира и обнаружения общих каталогов вы должны добавить его ID на другие серверы.

Установка SyncThing

Установка в Linux осуществляется скачиванием программного обеспечения:

Будем считать, что мы планируем синхронизировать сессии PHP, которые хранятся в каталоге /var/www/tmp. Сам каталог /var/www принадлежит пользователю www-data (Ubuntu, Debian) или nginx (CentOS).

Создадим файл для запуска SyncThing через systemd:

Для CentOS установите атрибут User= в значение nginx. Теперь включим созданную службу и запустим ее:

Теперь вы можете зайти с помощью браузера на ваш сервер http://server.com:8384/, где сможете выполнить дальнейшую настройку SyncThing.

Задание имени и пароля администратора

На этом шаге мы обеспечим безопасность SyncThing, задав имя и пароль для администратора.

Сохраните форму и обновите страницу в браузере. Интерфейс попросит вас ввести имя пользователя и пароль. После ввода вы попадете в интерфейс.

Удаление каталога, созданного по-умолчанию

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

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

Выполните все вышеприведенные настройки на каждом из узлов.

Создание пиринговой группы

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

Определите ID каждого сервера. Для добавления серверов необходимо знать их ID, чтобы не добавить случайно посторонние серверы.

Добавьте все серверы в группу удаленных устройств, нажав на кнопку «Добавить удаленное устройство«.

Далее, для каждого удаленного устройства выполните настройку «автопринятия» каталогов. Это позволит узлам автоматически уведомлять другие узлы о доступных каталогах:

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

Задание синхронизируемого каталога

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

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

Теперь содержимое /var/www/tmp будет синхронизироваться между серверами.

Тестирование синхронизации

На первом сервере создайте файл server1

На двух других серверах убедитесь, что он синхронизировался. По умолчанию задержка синхронизации — 10 секунд, возможно придется подождать окончания синхронизации:

Повторите этот тест на двух других серверах, создавая файлы server2 и server3.

Тестирование Отказа

Проверим, что без первого сервера все продолжает работать. Остановим его:

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

Уменьшение задержки синхронизации

Если вы желаете уменьшить время, на которое задерживается синхронизация, откройте файл конфигурации 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:

Как настроить синхронизацию папок с сервером

В этой главе рассматриваются следующие темы:

Примечание. Начиная с версии QTS 4.2, для пулов носителей, поддерживающих моментальные снимки, моментальный снимок создается до запуска задания резервного копирования Rsync или RTRR, что обеспечивает целостность данных. Перед созданием задания убедитесь, что для моментальных снимков зарезервировано достаточно места.

С помощью удаленной репликации Rsync можно выполнить резервное копирование данных NAS на удаленный сервер NAS или на сервер Rsync.

При репликации Rsync и NAS-NAS ограничение на максимальное количество заданий отсутствует. Однако фактический результат будет зависеть от размера памяти NAS и файловой структуры. Каждое задание поддерживает 1 пару папок.

91-RR-NAStoNAS

В случае использования NAS в качестве места назначения резервного копирования выберите «Главное меню > Backup Station > Сервер Rsync» и включите удаленную сеть NAS как сервер резервного копирования Rsync.

1.Чтобы создать задание репликации, нажмите «Создать задание репликации».
2.Укажите тип удаленного сервера (NAS или сервер Rsync). Введите имя задания. Нажмите «Далее».
3.Введите IP-адрес, номер порта, имя пользователя и пароль для входа на удаленный сервер. Номер порта по умолчанию: 873. Учетная запись для входа должна иметь права доступа на чтение/запись к удаленному серверу и достаточную квоту на сервере. Нажмите «Тест», чтобы проверить соединение, а затем выберите «Применить».
Читайте так же:
Как синхронизировать несколько папок яндекс диск
4.Укажите локальную папку, нажав на поле «Исходная папка». После раскрытия и поиска папки дважды щелкните ее и настройте папку как каталог, из которого будет выполняться репликация.
5.Укажите целевую папку в поле «Целевая папка». Найдите папку в дереве папок, дважды щелкните ее и задайте папку как каталог, в который будет выполняться репликация. Нажмите «Добавить», чтобы добавить эту пару папок репликации.
6.Нажмите «Периодичность резервного копирования» и настройте периодичность резервного копирования. Выберите немедленную репликацию данных или задайте расписание резервного копирования.
7.Выберите «Параметры» и нажмите «Применить», чтобы настроить указанные ниже параметры заданий удаленной репликации.
oВключить шифрование: выберите этот параметр для выполнения зашифрованной удаленной репликации. Обратите внимание, что в меню «Сетевые службы > Telnet/SSH» необходимо включить «Разрешить SSH-подключение» и указать для SSH и зашифрованной удаленной репликации один и тот же номер порта.
oВключить сжатие файлов: позволяет сжать файлы во время передачи данных. Рекомендуется использовать этот параметр в средах с небольшой полосой пропускания или при удаленной репликации по WAN.
oИспользовать инкрементную репликацию: если этот параметр включен, после первой репликации NAS будет выполнять резервное копирование только тех файлов, которые изменились с момента последнего резервного копирования. Файлы с теми же именами, размером и временем изменения повторно копироваться не будут. Рекомендуется включать этот параметр для таких заданий репликации, которые будут выполняться много раз, чтобы сократить время резервного копирования.
oУдалять дополнительные файлы в дистанционной конечной папке: выберите этот параметр, чтобы синхронизировать исходные данные с целевыми данными (односторонняя синхронизация). Дополнительные файлы в целевой папке будут удалены. Исходные данные останутся без изменений.
oЭффективная обработка разряженных файлов: разряженный файл — это компьютерный файл, содержащий большие блоки данных с нулевыми байтами. Включение этого параметра может сократить время, необходимое для удаленной репликации.
8.Нажмите «Применить». Если выбран параметр «Выполнить резервное копирование немедленно», задание репликации запустится сразу же. В противном случае оно будет выполнено в соответствии с расписанием. Обратите внимание, что задание является рекурсивным. Не выключайте локальный NAS и удаленный сервер во время выполнения удаленной репликации.

Примечание. При выполнении операции 5 порядок выбора исходной и целевой папок можно изменить. Выше приведен просто пример.

Немедленный запуск задания репликации.

Остановка выполняющегося задания репликации.

Просмотр журналов Rsync (результатов репликации).

Изменение задания репликации.

Выключение расписания репликации.

Включение расписания репликации.

Чтобы настроить параметры времени ожидания и повторных попыток заданий репликации, нажмите «Параметры».

Время ожидания (в секундах): ввод значения времени ожидания для каждого задания репликации. Здесь задается максимальное время в секундах на ожидание отмены задания репликации в случае неполучения данных.
Количество повторных попыток: ввод количества повторных попыток на выполнение задания репликации NAS в случае сбоя.
Время между попытками (в секундах): ввод времени ожидания в секундах перед каждой повторной попыткой.

Например, если ввести «600 секунд» для времени ожидания, «3 попытки» и «60 секунд» между повторными попытками, то, если данные не будут получены, время ожидания задания репликации истечет через 600 секунд. NAS подождет 60 секунд и попытается выполнить задание во второй раз. Если время ожидания будет превышено опять, NAS подождет еще 60 секунд и попытается выполнить задание в третий и последний раз.

Читайте так же:
На этом компьютере запрещена синхронизация

91-RR-RTRR

Репликация ресурсов в режиме реального времени (RTRR) обеспечивает репликацию данных в реальном времени или по расписанию и одно- или двухстороннюю синхронизацию данных между двумя расположениями (например, репликация между локальным NAS и удаленным NAS, локальным NAS и FTP-сервером, локальным NAS и внешним диском или репликация между локальными папками). В режиме реального времени осуществляется текущий контроль исходной папки, и любые новые, измененные и переименованные файлы немедленно реплицируются в целевую папку. В режиме расписания репликация исходной папки в целевую папку выполняется в соответствии с предварительно заданным расписанием.

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

Если целевым местом для резервного копирования является NAS, то сначала в удаленной системе NAS необходимо включить сервер RTRR («Главное меню > Backup Station > Сервер RTRR») или FTP-сервер («Главное меню > Панель управления > Сетевые службы > FTP»).

Для RTRR допускается не более 400 заданий. Каждое задание поддерживает до 16 пар папок.

FileZilla — Как синхронизировать в двух направлениях (выигрывает новейший файл)?

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

Это очень стандартная процедура, но я не могу найти, как это сделать с помощью FileZilla.

2 ответа 2

FileZilla не поддерживает автоматическую синхронизацию файлов / папок:
https://trac.filezilla-project.org/ticket/1591

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

См. Просмотр> Сравнение каталогов.

Если вам нужна автоматическая синхронизация папок, вам нужно использовать другой клиент FTP/SFTP.

Для двусторонней синхронизации выберите параметр « Оба» в каталоге «Направление / цель»:

Я не проверял это сам, но нашел интересную статью о синхронизации с FileZilla с использованием FTP здесь

Не могу помочь, но чувствую, что это звучит слишком сложно, так что, возможно, есть более простое решение. Лично я бы протестировал некоторые другие сервисы, такие как goodsync или ftpbox.org. Подобный вопрос был задан здесь в Superuser, но ответы предлагают использовать WinSCP.

Так как вы спрашивали конкретно об использовании FileZilla, вот вам:

Загрузите FTP-клиент FileZilla и установите его на свой компьютер, если вы этого еще не сделали (ссылка в разделе Ресурсы).

Запустите FileZilla, откройте меню «Файл» и выберите «Менеджер сайта».

Введите доменное имя FTP-сервера для вашего сайта в поле Хост. Некоторые сайты используют формат «www.domainname.com» для служб FTP, в то время как другие используют формат «ftp.domainname.com». Если вы не уверены в том, какой формат использует ваш сайт, обратитесь к приветственному сообщению электронной почты, которое вы получили от хостинговой компании при создании учетной записи для вашего доменного имени и веб-сайта. В электронном письме должна содержаться вся необходимая информация о FTP и логине, необходимая для использования FileZilla для загрузки и синхронизации файлов.

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

Нажмите кнопку «Быстрое подключение», чтобы войти на удаленный веб-сервер. Подождите несколько секунд, пока FileZilla согласовывает учетные данные для входа и устанавливает соединение с сервером. Затем FileZilla отображает папки в корневом каталоге веб-сервера. Дважды щелкните «Home», «Public_HTML», «WWW» или другое имя каталога, содержащее файлы и папки для вашего веб-сайта.

Читайте так же:
Zte nubia программа синхронизации с пк

Прокрутите вниз до папки, которую вы хотите синхронизировать с вашим компьютером. Запишите имя папки, затем нажмите «Отключить» на панели инструментов и закройте FileZilla.

Откройте проводник Windows, затем дважды щелкните значок диска «C:». Нажмите кнопку «Новая папка» в окне проводника Windows, затем переименуйте папку, чтобы она точно соответствовала папке, которую вы хотите синхронизировать на сервере. Закройте окно проводника Windows.

Запустите FileZilla снова. Нажмите «Файл» и «Менеджер сайта», затем выберите свой FTP-сервер из списка. Перейдите на вкладку «Дополнительно» в окне «Диспетчер сайтов», затем нажмите кнопку «Обзор» рядом с полем «Локальный каталог по умолчанию». Перейдите к новой папке, созданной в проводнике Windows, затем нажмите «Открыть».

Убедитесь, что имя папки в поле «Удаленный каталог по умолчанию» точно совпадает с именем в поле «Локальный каталог по умолчанию». Поскольку вы закрыли приложение FileZilla во время просмотра папки, которую хотите синхронизировать на сервере, имена папок по умолчанию должны совпадать. Однако, если имена папок не совпадают, просто введите имя папки из поля «Локальный каталог по умолчанию» (без «C:») в поле «Удаленный каталог по умолчанию».

Нажмите и включите опцию «Использовать синхронизированный просмотр» на вкладке «Дополнительно», затем нажмите кнопку «Подключиться». После того как вы подключитесь и установите сеанс FTP с сервером, FileZilla предложит вам синхронизировать папки. Нажмите кнопку «Да», чтобы загрузить файлы с сервера в новую папку, созданную на жестком диске вашего локального компьютера. После выполнения начальной синхронизации папок FileZilla проверяет изменения каждый раз, когда вы повторно подключаетесь к FTP-серверу. Если новые файлы существуют в любой папке — локальной или удаленной — приложение предложит вам синхронизировать каталоги. Если вы нажмете «Да», FileZilla загрузит или загрузит файлы для синхронизации папок по мере необходимости.

Синхронизация файлов сайта в WinSCP 4

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

WinSCP – это бесплатный SFTP клиент для Windows, предназначенный для работы с файлами и папками на удалённом сервере.

SFTP (SSH File Transfer Protocol) – это протокол шифрования данных, благодаря которому все передаваемые вами данные будут под надёжной защитой.

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

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

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

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

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

Настройка подключения к сайту по протоколу SFTP.

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

Читайте так же:
Как синхронизировать контакты с айфона на компьютер через айтюнс

Итак, запускаете программу, перед вами появится окно настройки входа. Выбираете пункт «Новое подключение»«Протокол передачи данных – SFTP» — вводите имя сервера (хоста), имя пользователя, пароль и нажимаете на кнопку «Сохранить».

Новое подключение

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

После сохранения настроек, нажимаете на кнопку «Войти». Программа запросит ключ сервера, нажмите на кнопку «Да» для добавления ключа в кэш.

Ключ к серверу

Далее, ещё раз нужно будет ввести пароль. Здесь же можно поставить чекбокс и программа запомнит пароль. Делайте это только в том случае, если к компьютеру нет доступа посторонних лиц.

Подтверждение пароля

На этом настройка подключения окончена. Если вы выполнили всё, верно, то увидите в программе две панели, в одной содержимое компьютера, в другой содержимое сайта или сайтов на хостинге.

Подключение завершено

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

Управление программой

Синхронизация файлов сайта.

В автоматическом режиме можно настроить синхронизацию с компьютера на сервер. Сделать это можно комбинацией клавиш CTRL+U. Этот вариант хорош, когда вы работаете над сайтом на локальном сервере и периодически обновляете его на сервере.

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

Этот процесс тоже можно сделать автоматическим, но для этого нужно писать скрипты, подключать задания Windows.

Но, проще сделать это средствами программы, под личным контролем. К тому же делается это очень легко.

Первым делом создайте на компьютере (желательно на дополнительном разделе диска) папку Backups. Сделать это можно прямо в программе WinSCP.

Выбираете место на компьютере и нажимаете F7 или пункт меню «Файлы»«Новый»«Папка».

Создание папки

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

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

Подготовка к синхронизации

Подготовка к синхронизации

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

Далее, на панели инструментов нажимаете на кнопку «Синхронизировать».

Откроется окно настройки синхронизации. Все настройки выставлены оптимально, но вы сами можете исправить направление, сменить режим и поменять параметры. Если это вам необходимо. Если нет, нажимайте на кнопку «ОК».

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

Далее, увидите все файлы, которые будут синхронизированы. На скриншоте один файл отмечен крестиком. Это скрытый файл на компьютере, он будет удалён из папки Backups, так как его нет на сайте. А синхронизация подразумевает под собой полную идентичность.

Убедившись, что всё правильно нажимаете на кнопку «ОК».

Файлы для синхронизации

Файлы для синхронизации

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

Подробнее весь процесс смотрите в видеоуроке.

На сегодня у меня всё, я желаю вам успехов и до встречи в новых статьях и видеоуроках.

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