Syncthing

О синхронизации

Однажды я уже писал об облачном сервисе MEGA, который всем рекомендую и которым продолжаю пользоваться. Я использую его и для бэкапов, и для бессрочной раздачи файлов, для передачи на десктоп файлов с телефона. Последнее происходит чаще всего — я сливаю на комп фото и видео, и надо заметить, что в какой-то момент Camera Uploads в моем облаке неприлично распухла.

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

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

Resilio Sync

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

Вестимо, дело не ограничивается сериалами и применений у BitTorrent немало других, но было бы еще больше, если бы возможно было каким-то образом менять содержимое однажды созданной раздачи. Так компания BitTorrent Inc выкатила средство под названием BitTorrent Sync, основанное на всё том же протоколе, чуть позже переименованное в Resilio Sync.

К сожалению, и оно оказалось не без недостатков — будучи основанным на закрытой реализации протокола BitTorrent, средство синхронизации осталось таким же закрытым со всеми вытекающими последствиями в виде freemium, сказывающимися на функционале. То есть не просто средство, а сервис. Не удивительно, что уже через четыре месяца после релиза BTSync релизнулся и открытый аналог - Syncthing.

Syncthing

Syncthing — аналог BTSync, но есть и довольно значительные различия. Если BTSync позволяет раскидываться секретами, что тут же привело к возникновению подобия трекера с всё теми же сериалами, то разработчики Syncthing немного заморочились по безопасности и сделали именно средство синхронизации, а не просто торренты с обновлениями. Сначала в Syncthing создаются пары девайсов и только потом добавляются папки для синхронизации между ними. При таком раскладе никакого пиратства не получится. Да, BTSync тоже позволяет создавать раздачи с подтверждением, но какой в нём смысл при наличии полностью бесплатного и открытого аналога? Разве что разница в интерфейсе. В описываемом мною случае для моей личной домашней синхронизации я конечно выберу Syncthing.

Односторонняя синхронизация

Итак, у меня на телефоне есть

  • DCIM - там все фото и видео с камеры, а также графика из некоторых других приложений, использующих камеру
  • В Pictures сохраненная графика из разных приложений
  • В Movies, соответственно, видео
  • Кроме того, я нередко пользуюсь диктофоном
  • И на всякий случай храню записи звонков (есть такая функция в телефоне)

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

Сперва нужно установить Syncthing на обоих девайсах. За этим в первую очередь на официальный сайт. На телефон я ставлю Syncthing-Fork, который можно найти в Google Play и F-droid.

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

Devices{:height=“250px” width=“250px”}

Желательно сразу же заглянуть в настройки добавленного девайса и уточнить условия синхронизации - Specify sync conditions, не забыв включить Custom sync conditions.

Specify sync conditions{:height=“250px” width=“250px”}

Как видно, у меня синхронизация возможна только в сети Wi-Fi и только в сети моего домашнего роутера, чей SSID на скриншоте замазан.

Идём дальше, прямиком в Folders и добавляем папку для сихнронизации.

Добавить папку{:height=“250px” width=“250px”}

Я сразу же выбираю Nest - это имя десктопа, чтобы после создания папки десктопный Syncthing предложил мне добавить её. Возможно также выбрать версионирование, но в случае с фото и видео никакой нужды в этом нет.

Здесь же такой важный пункт как Folder Type. Я выбираю Send Only, чтобы файлы отправлялись с телефона на десктоп, но никакие изменения не принимались обратно. Это нужно только в случаях из списка выше, а другие рассмотрим позднее.

Specify sync conditions{:height=“250px” width=“250px”}

WEB UI на десктопе предлагает добавить эту папку:

Добавить папку{:width=“550px”}

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

Добавить папку{:width=“550px”}

А теперь важный пункт. Не смотря на то, что папка на телефоне обозначена как Send only, важно знать и не забывать о существовании такого параметра, как ignoreDelete. Он не спасет вам жизнь, но спасет ваши файлы. Этот параметр, установленный для синхронизируемой папки на десктопе, сохраняет на нем те файлы, что были удалены на телефоне. Синхронизация ведь подразумевает симметричные действия,пусть даже в одну сторону, как в случае с Send only, но нам важно сохранить на десктопе всё, что на него попал, и что уже не нужно хранить на телефоне. Для этого отправляемся в меню Действия > Дополнительно

Дополнительно{:width=“550px”}

Там находим нужную папку, разворачиваем и ставим галочку напротив ignore Delete, а затем Сохранить внизу окошка.
Обратите внимание: здесь можно сменить путь папки.

Дополнительно{:width=“550px”}

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

Двусторонняя синхронизация

А как быть с текстовыми файлами — разнообразными todo и заметками? Ещё проще!

На телефоне я пользуюсь аутлайнером Orgzly. Это текстовые файлы оформленные языком разметки org-mode. Туда летят мелкие заметки, ссылки и списки. До недавней поры я использовал для синхронизации этих файлов Dropbox, который поддерживается самим Orgzly, но так как от Dropbox’а я давно уже отказываюсь по мере возможности, Syncthing заменил мне его. Разве что сохранности ради на десктопе эти файлы попадают в папку MEGA.

Для прочих текстов я использую Markor. Мимоходом для любопытствующих, если вам не придется по душе Markor, советую глянуть neutriNote.

В каждой из этих программ, как и в большинстве подобных им, можно указать папку, где содержатся все файлы. Само собой, просто добавляем эти папки в Syncthing-Fork, но с небольшими различиями. Выберите Send & Recieve в Folder Type, чтобы синхронизация была двусторонняя и не устанавливайте параметр ignoreDelete на десктопе. Также здесь не будет лишним версионирование — тексты ничего не весят и Syncthing позволяет хранить несколько версий одного файла для сохранности.

File versioning{:height=“250px” width=“250px”}

То же и на десктопе:

Управление версиями{:width=“550px”}

Станет доступно вот такое окно. Старые версии также можно найти и через файл-менеджер в скрытой папке .stversions.

Восстановить версии{:width=“550px”}

Бэкап

Настраивать всё это совсем не сложно, но когда приложений много и много папок, повторять все эти действия при замене телефона не хотелось бы. На этот случай есть импорт и экспорт настроек. Зайдите в меню Syncthing-Fork и выберите Import and Export.

Минусы

Без них, как водится, не бывает. Пока я нашел только один минус — так как это “облако без облака”, невозможно синхронизировать когда угодно и откуда угодно. Меня вполне устраивает делать это, когда я прихожу домой и включаю компьютер. Я знаю, что все эти файлы не окажутся где-либо еще, не побегут по сети какими-то неведомыми путями и нигде не задержатся, так как синхронизация, согласно выбранным мною ограничениям в настройках, происходит только в подсети моего роутера и никак иначе. Если я поеду в другой город, чтобы наделать там красивых фотографий и забить всю память моего телефона видео, Syncthing никак мне в такой ситуации не поможет. Впрочем, на этот случай есть MEGA, куда я могу слить весь груз, и этого никто не отменял.

Плюсы

Здесь я расписал всего один кейс — незаметно и без заморочек сливать файлы с телефона, но Syncthing далеко не ограничивается этим, как и количеством девайсов и направлений. С плюшкой Variable Size Block для крупных файлов и встроенным контролем версий Syncthing может использоваться, например, в работе с большими мультимедийными проектами (видео, аудио) на несколько компьютеров, удаленных друг от друга слишком далеко для локалок или беготни с флэшками. Применений, с учетом даже этих нескольких обозначенных функций, найти можно множество. И всё это совершенно бесплатно!


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


comments powered by Disqus