Как установить и настроить синхронизацию для синхронизации каталогов в Ubuntu 14.04

Вступление

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

В этом руководстве мы покажем вам, как начать использовать Syncthing для синхронизации данных между двумя экземплярами сервера Ubuntu 14.04. Это позволит вам беспрепятственно синхронизировать файлы между этими серверами на основе настроенных «наблюдающих» каталогов.

Предпосылки и цели

Для выполнения этого руководства вам понадобится доступ к двум экземплярам сервера Ubuntu 14.04.

Для целей данного руководства мы будем называть эти серверы:

  • * Serverone *

  • * Servertwo *

Это будут равноправные партнеры, поэтому нет первичных / вторичных отношений. У вас должна быть настроена учетная запись обычного пользователя для каждого из них (вы можете узнать, как, выполнив шаги 1-4 в нашем https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu- 14-04 [руководство по первоначальной настройке сервера для Ubuntu 14.04] здесь).

Учетная запись обычного пользователя в этом руководстве будет называться ++, но вы должны использовать любое имя пользователя, которое захотите. Это не обязательно должно быть отдельным от вашей обычной учетной записи без полномочий root.

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

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

Начальная загрузка и установка

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

Чтобы найти последнюю упакованную версию, вы можете перейти на страницу releases на GitHub. Внизу расположены кнопки для каждого типа операционной системы.

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/download_buttons.png [страница релиза синхронизации]

Если ваши Linux-системы 32-битные, выберите выбор, начинающийся с «` + syncthing-linux-386 -…​ + ». Если вы используете 64-битные серверы, выберите тот, который помечен как « + syncthing-linux-amd64 -…​ + `». Не загружайте файл на свой локальный компьютер. Вместо этого щелкните правой кнопкой мыши соответствующий файл и выберите «Скопировать адрес ссылки» или любой другой подобный вариант.

Мы будем загружать эти файлы с помощью команды + wget + на каждом из наших серверов. На ваших серверах введите + wget +, затем пробел, а затем вставьте скопированную ссылку. Версия и архитектура системы могут отличаться для вас:

cd ~
wget

Теперь мы можем распаковать архив, набрав:

tar xzvf syncthing*.tar.gz

Перейдите во вновь созданный каталог:

cd syncthing*

Здесь у нас есть исполняемый файл с именем + syncthing +, который мы можем использовать для запуска службы. Мы хотим скопировать это в расположение в нашем + PATH +, чтобы мы могли вызывать его как обычное приложение.

Сделайте это с привилегиями sudo, набрав:

sudo cp syncthing /usr/local/bin

Теперь мы можем вернуться в наш домашний каталог и безопасно удалить все оставшиеся файлы и каталоги Syncthing.

cd ~
rm -rf syncthing*

Выполните все вышеперечисленные шаги на обоих ваших серверах.

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

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

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

Чтобы это исправить, нам нужно отредактировать строку в файле конфигурации Syncthing. Однако файл конфигурации еще не создан.

Чтобы создать файл автоматически, мы можем кратко запустить службу. Введите команду + syncthing + для запуска и запуска:

syncthing

Процесс + syncthing + не является демоном, что означает, что он выполняется в текущем сеансе оболочки (мы обойдем это путем кратковременной реализации сценария Upstart). Это запустит процесс и создаст несколько необходимых файлов.

Через некоторое время вы увидите информационное сообщение о вашем Node ID, которое выглядит так:

[2EQK3] 15:47:15 OK: Ready to synchronize default (read-write)
[2EQK3] 15:47:15 INFO: Node 2EQK3ZR77PTBQGM44KE7VQIQG7ICXJDEOK34TO3SWOVMUL4QFBHA is "server1" at [dynamic]

Когда вы видите это, это означает, что процесс инициализирован правильно. Теперь мы можем остановить процесс, набрав:

CTRL-C

Это остановит процесс и снова даст нам контроль над терминалом.

Теперь мы можем отредактировать созданный файл конфигурации. Откройте файл в вашем текстовом редакторе:

nano ~/.config/syncthing/config.xml

Ищите раздел, который имеет дело с GUI. Это должно выглядеть так:

<gui enabled="true" tls="false">
   <address>127.0.0.1:8080</address>
</gui>

Единственное изменение, которое нам нужно сделать, это заменить адрес локального хоста (+ 127.0.0.1 +) на + 0.0.0.0 +, который представляет все сетевые интерфейсы. Этот раздел будет выглядеть так, когда вы закончите:

<gui enabled="true" tls="false">
   <address>:8080</address>
</gui>

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

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

Создайте сценарий Upstart для обработки состояний сервиса

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

Сценарий Upstart, который мы будем использовать, взят из post на форумах Syncthing. Создайте и откройте файл Upstart с правами root в вашем редакторе, набрав:

sudo nano /etc/init/syncthing.conf

Внутри мы будем использовать следующие строки для управления процессом Upstart:

description "Syncthing P2P sync service"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

env STNORESTART=yes
env HOME=/home/
setuid ""
setgid ""

exec /usr/local/bin/syncthing

respawn

Давайте рассмотрим, что это значит.

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

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

Следующая переменная окружения задает домашний каталог, который будет использоваться Syncthing. Это будет использоваться для поиска правильных файлов конфигурации и предварительного заполнения полей в графическом интерфейсе. Мы также определим пользователя и группу, используя параметры + setuid + и + setgid + соответственно. Измените все эти три значения, чтобы они указывали на информацию вашего пользователя.

Затем мы устанавливаем путь к фактической команде, которую мы собираемся выполнить. Наконец, мы используем + respawn +, чтобы сказать Upstart, чтобы он автоматически перезапускал процесс, если он остановлен преждевременно. Это используется для автоматического перезапуска процесса (чисто), когда процесс Syncthing пытается перезапустить себя изнутри.

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

Теперь вы можете запустить сервис, набрав:

sudo initctl start syncthing

Выполните вышеуказанные шаги на обоих ваших серверах.

Настройка безопасности в веб-интерфейсе

Мы наконец готовы настроить наши экземпляры через веб-интерфейс пользователя.

Войдите в каждый из интерфейсов синхронизации серверов, посетив их общедоступные IP-адреса и порт + 8080 +:

http://:8080
http://:8080

Вы увидите главный экран синхронизации:

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/default.png [Синхронизация основного экрана]

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

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/settings.png [Настройки синхронизации]

С правой стороны нам нужно установить имя пользователя и пароль для веб-интерфейса. Мы также хотим включить шифрование TLS для наших сеансов, чтобы наш трафик не мог быть перехвачен при передаче, установив флажок «HTTPS»:

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/authentication.png [Безопасность синхронизации]

Когда вы закончите, нажмите кнопку «Сохранить» внизу.

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

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/restart.png [Перезапуск синхронизации]

Нажмите на кнопку «Перезагрузить».

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

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/ssl_warning.png [Предупреждение о синхронизации SSL]

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

Затем вы получите запрос аутентификации для имени пользователя и пароля, которые вы настроили:

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/auth_required.png [Синхронизация имени пользователя и пароля]

Заполните соответствующие значения и войдите в систему. Ваш интерфейс теперь более защищен от внешнего трафика.

Выполните эти шаги на обоих серверах.

Соединение двух серверов и общих каталогов

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

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

Это вызовет наложение с длинным идентификатором, который вы можете скопировать. Он также даст вам QR-код, если вы настраиваете приложение для смартфона. Скопируйте идентификатор первого узла.

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/node_id.png [Синхронизация идентификатора копии]

На втором сервере нажмите в меню «Редактировать» и выберите «Добавить узел».

Появится наложение с полями, которые необходимо настроить, чтобы добавить другой сервер. В поле «ID узла» вставьте идентификатор, который вы скопировали с первого сервера. В поле «Имя узла» выберите любое описательное имя, которое вы хотели бы использовать для своего другого сервера. Оставьте «Адреса» как «динамические»:

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/add_node.png [Синхронизация добавить узел]

Когда вы закончите, нажмите «Сохранить», чтобы добавить новый узел.

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

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

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/repo.png [Синхронизация репо по умолчанию]

Нажмите на кнопку «Редактировать», чтобы настроить репо. Внизу у вас будет возможность поделиться этим хранилищем с любым из настроенных вами узлов. Установите флажок, связанный с противоположным узлом, а затем нажмите кнопку «Сохранить»:

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/share_repo.png [Синхронизация общего доступа с узлом]

Теперь вы можете нажать кнопку «Перезагрузить», чтобы внести изменения:

изображение: https: //assets.digitalocean.com/articles/syncthing_1404/restart.png [Перезапуск синхронизации]

Теперь любые изменения, сделанные в каталоге + ~ / Sync +, будут отражены на противоположном сервере. По умолчанию он будет синхронизироваться каждые 60 секунд, но это можно изменить в меню «Настройки».

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

Заключение

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

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

Related