Новость из категории: Информация, Linux

Syncthing: как делиться файлами

Syncthing: как делиться файлами

Пару месяцев назад я наткнулся на простую программу синхронизации файлов — она автоматически синхронизирует различные устройства с помощью локальных соединений, если эти устройства находятся в одной сети, и обеспечивает безопасную передачу через Интернет, если они не находятся в одной сети. Эта программа называется Syncthing и использует одноранговый протокол (peer-to-peer).

Syncthing: как делиться файлами
Syncthing запущен, и всё, что вам надо добавить - это устройство, с которым вы хотите синхронизироваться

Компьютер, на котором запущена Syncthing, называется узлом, и каждый из узлов определяется сертификатом, создаваемым при установке ПО. Связь между узлами шифруется с помощью TLS, и данные хранятся только на индивидуальных узлах, а не на каком-то центральном сервере. Центральный сервер нужен лишь для того, чтобы дать узлам возможность найти друг друга, и даже для этого он не требуется, если компьютеры находятся в одной LAN. Использование подобных сертификатов означает, что когда вы перемещаете ваш компьютер в другую сеть с другим адресом, он по-прежнему синхронизируется с другими узлами.

Первый шаг — установить ПО. Пользователи Debian и Ubuntu могут добавить их репозиторий с помощью команд
$ curl ­-s https://syncthing.net/release­-key.txt | sudo apt­-key add ­-
$ echo deb http://apt.syncthing.net/ syncthing release | sudo tee / etc/apt/sources.list.d/syncthingrelease.list

и установить пакет syncthing:
$ sudo apt-get update 
$ sudo apt-get install syncthing

Пользователи других дистрибутивов могут скачать свежий пакет с https://syncthing.net. Он содержит бинарник syncthing, который можно скопировать куда-нибудь в ваш PATH.

Первый запуск

При первом запуске Syncthing из терминала от имени обычного пользователя она сгенерирует настройки по умолчанию наряду с ключами идентификации и откроет свой административный интерфейс в web-браузере. Левая часть окна показывает директории для совместного пользования и одну, созданную по умолчанию. Правая сторона показывает компьютеры, с которыми вы синхронизируетесь. Конечно, на данный момент список пустой, так что вам надо повторить этот процесс на другом компьютере — а если у вас нет двух компьютеров, зачем вам тогда учебник по синхронизации файлов?

По умолчанию web-интерфейс доступен только одному компьютеру. Если вы хотите администрировать Syncthing с удаленного компьютера, вам понадобится отредактировать ~/.config/syncth-ing/config.xml. Найдите раздел, начинающийся с
Теперь давайте дадим двум компьютерам поговорить. Выберите Show ID в меню Action на первом компьютере. Каждому компьютеру можно дать имя в панели Settings, а по умолчанию оно обычно совпадает с именем хоста. Syncthing различает компьютеры между собой при помощи уникальных строк ID. Скопируйте ID в буфер, затем откройте в другой вкладке окно администрирования на другом компьютере, нажмите Add Device и вставьте туда ID устройства. При желании вы можете дать ему имя; остальные опции на данный момент можно оставить в покое. Когда вы сохраните настройки, Syncthing спросит, можно ли перезапуститься; он делает это практически после любого изменения настроек. Повторите процесс на другом компьютере, и теперь они должны показаться на web-интерфейсах друг друга. Поскольку они по умолчанию создают директорию sync с идентичным ID, они уже синхронизируют эту директорию. Скопируйте какие-нибудь файлы в директорию на одном компьютере и нажмите кнопку Rescan, и эти файлы должны появиться на обоих компьютерах.

Это основы работы, но, в отличие от Dropbox, вы можете синхронизировать более одной директории и контролировать, что копировать, а что нет. Нажмите на Add Folder и введите детали. Здесь есть ряд важных опций, и самой главной является ID папки. Он должен быть одинаковым на обоих компьютерах, чтобы папки синхронизировались; этот ID приводит в соответствие директории, а не их пути на диске. Вы можете проводить синхронизацию различных путей, что весьма удобно, например, если вы синхронизируетесь из вашей директории home c папкой резервных копий на файловом сервере.

Давайте взглянем на другие опции, которые можно задать при создании или редактировании папок для синхронизации. Интервал Rescan весьма очевиден; по умолчанию это шестьдесят секунд, что кажется чрезмерно частым для многих случаев; выбирайте сами. Syncthing обращается со всеми копиями синхронизирован ной папки как с равными, и изменения в любой из них применяются и к остальным (папку можно синхронизировать на нескольких компьютерах). Если файл между сканированиями изменен более чем на одном компьютере, обе копии будут сохранены с конфликтными расширениями. Вам придется выбрать, какую из них оставить, поскольку сам компьютер этого знать не может. Для папки с опцией maste эта практика меняется: изменения на компьютере с ус та нов кой данного флажка станут эта лоном. Применяйте эту опцию, если используете Syncthing для резервного копирования. Можно выбрать, с каким из присоединенных устройств создать совместный доступ; тогда окно запроса появится в web-интерфейсе другого компьютера, чтобы подтвердить действие. Запуск страниц администрирования всех компьютеров в виде вкладок одного браузера значительно облегчает настройку.

Опция версионирования файлов позволяет сохранять несколько копий файла, разными способами. Ссылка Help подробно объяснит все имеющиеся возможности, но простейший выбор создания версии файла хранит заданное количество недавних копий каждого файла в директории под названием .stversion. При добавлении новых копий старые удаляются. Другие настройки дают вам больше или меньше контроля над управлением версиями.
Возмож но, вам незачем синхронизировать все файлы в папке, и Syncthing обеспечивает возможность избежать лишних действий с помощью файла под названием .stignore. Этот файл в корне папки с общим доступом содержит ряд строк с шаблонами файлов. Если файл соответствует одной из этих строк, он игнорируется и не синхронизируется, например:
**/*.crdownload 
/.cache 
/.emacs.d/auto-save-list

Первая строка — шаблон **, который соответствует любому числу директорий, включая ноль. Этот шаблон соответствует временным файлам, которые Chromium создает для загрузок и которые способны меняться за время синхронизации. Вторая строка соответствует целой директории, / привязывает ее к пути папки, а не к корню файловой системы, третья соответствует одному файлу. Вы также можете поставить перед шаблоном !, что заставит включить любое соответствие, даже если последующий шаблон его исключил. Таким образом можно указать только те пути, которые вы хотите синхронизировать — это бывает проще, чем создавать отдельную папку для каждого из них. Например, можно синхронизировать вашу папку home и поместить ее в .stignore, что бы включить только три папки.

!/Dropbox
!/Documents
!/Music

Шаблоны игнорирования вы можете редактировать в своем любимом текстовом редакторе или по кнопке в окне настроек папки. Учтите, что сам файл .stignore не синхронизируется с другими компьютерами. Желая синхронизировать контент, впишите его в другой файл — я использую .stglobalignore — и поместите его
в .stignore #include/.stglobalignore.

Автоматический запуск

Syncthing не стоит запускать от имени root.

Если вы намереваетесь запускать его при загрузке, вам может понадобиться изменить скрипт init, чтобы использовать -u, или использовать функцию автозапуска своего рабочего стола, чтобы запустить его при загрузке рабочего стола. Пользователям systemdжить проще — используйте
$ systemctl start syncthing@user.service 
$ systemctl enable syncthing@user.service

чтобы соответственно запустить сервис и чтобы он автоматически запускался при загрузке. Знак @ — это способ, которым systemd передает аргумент в файл сервиса; в данном случае это имя пользователя, который запускает Syncthing. Если вы работаете как обычный пользователь, выключите опцию Automatic upgrades в настройках. Syncthing попробует обновиться, но не сумеет, и будет досаждать вам сообщениями об этом, и пока он работает, это скорее раздражает, чем идет на пользу.


Syncthing: как делиться файлами
Если вы хотите открывать интерфейс администрирования в Большой и Злобной Сети (Big Bad Web), стоит создать пользователя с надежным паролем

Синхронизация на ходу

Синхронизация ваших компьютеров — это уже дело хорошее, но у Syncthing есть еще и приложение для Android и бета-версия приложения для iOS. Интерфейс несколько иной, но вы быстро поймете, как добавлять устройства и папки. Помните, как вы открыли окно, чтобы показать Device ID вашего компьютера, а оно содержало QR-код? Вы можете отсканировать его камерой вашего телефона, что бы добавить компьютер к камере.

Syncthing использует одноранговый протокол. У каждого компьютера есть уникальный ID, а центральный сервер просто связывает их между собой. Если вы синхронизируете компьютеры в одной сети, можете использовать локальное обнаружение (local discovery) на панели Settings, чтобы не тратить интернет-трафик. Все это удовольствие — с открытым кодом, так что если вы хотите общаться через Интернет, не передавая никакой информации третьим лицам, вы можете создать и запустить свой собственный сервер обнаружения. В исчерпывающей онлайн-документации имеется раздел (ссылка на него находится в низу страницы web-администрирования), посвященный установке и запуску вашего собственно го сер вера обнаружения для обеспечения полной конфиденциальности.

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

Рейтинг статьи

Оценка
5/5
голосов: 1
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Перевести статью:

Похожие новости

Комментарии

Информация