Syncthing+EncFS = Синхронизация файлов для параноика

ВНИМАНИЕ!!! ОЧЕНЬ МНОГО БУКОВ!!!!!

Шучу,  очень много картинок и вспомогательных видео, а все описанное в сухом остатке делается минут за 10-15. Погнали!

Предисловие

В нашу эпоху больших корпораций, которые предоставляют тысячу и один удобный сервис, возникает вопрос — нужно ли заморачиваться и использовать «что-то свое»? У нас есть почта, есть соцсети, мессенджеры и, конечно, сервисы для хранения и синхронизации данных — бери не хочу. Но в тот момент, когда мы размещаем свои данные на публичных сервисах, мы автоматически лишаемся определенных прав на этот контент, и я даже не буду говорить про случаи, когда компании прямо пишут в соглашениях что все права на размещенный контент присваиваются компании. В первую очередь я говорю о непосредственной безопасности данных, которые могут утекать в результате взломов таких сервисов как dropbox или iCloud. Это могут быть как данные учетных записей, как в первом случае, так и сами данные в открытом виде — как нашумевшем случае (точнее «случаях») с iCloud. Нужно понимать, что может быть лично вас никто взламывать и не хочет, но ваши важные данные, такие как сканы документов, или рабочие файлы, могут «угнать» просто в общей куче.

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

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

Защита данных при помощи EncFS

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

Слева — зашифрованные файлы и папки, справа — расшифрованные

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

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

Windows/MacOS X

Под винду и мак существует проект EncFSMP. Установка обычная и ничем не примечательная, как минимум под виндой. После установки создадим папку, назовем ее, например, «Sync.enc»:

Запустим программу:

Нажмем «Create new EncFS» чтобы использовать нашу папку как хранилище будущих зашифрованных данных.
В этом окне нужно
1. выбрать нашу папку — «EncFS path»
2. ввести произвольное имя «Mount name»
3. указать надежный пароль, которым будут шифроваться данные
4. выбрать букву для диска, которым будут представлены расшифрованные данные:

После нажатия ОК мы увидим что папка добавилась в программу.

Нажмем «Mount» и введем пароль. После этого мы обнаружим в проводнике новый диск.

Теперь мы можем работать с новым диском, при этом его содержимое для нас будет выглядеть привычным образом, а на самом деле оно будет в нашей папке «Sync.enc» :

Для большей наглядности можно посмотреть как выглядят проведенные действия «вживую»

Linux

upd: Вместо описываемого ниже Gnome Encfs Manager в 2021м году стоит использовать Molch Encfs Manager, принципы работы с ним почти не отличаются. Приложение мобильное и устанавливать его не нужно.

В качестве линукса я использую Linux Mint, на его примере я и покажу как приготовить EncFS. Для этого можно установить Gnome Encfs Manager. В моем случае, так как я использую основанный на Ubuntu дистрибутив, это делается следующим однострочником:

 
 
  1. sudo add-apt-repository ppa:gencfsm && sudo apt-get update && sudo apt-get -y install gnome-encfs-manager

После этого запускаем Gnome Encfs Manager

Нажимаем кнопку «Create or import a stash». Указываем каталог для шифрованных данных, каталог для расшифрованных, и пароль:

После создания каталог сразу монтируется и мы можем размещать свои данные:

Для наглядности также видео

Синхронизация. Устанавливаем Syncthing.

Теперь, когда мы обеспечили нашим данным безопасную форму, озаботимся синхронизацией этих данных между компьютерами. Можно, конечно, наши зашифрованные папки расположить внутри дропбокса, и это уже будет хорошо — даже если сервис взломают, злыдни получат не более чем пачку файлов с непонятными именами и кашей внутри. Однако дропбокс, обладая рядом вкусных фич, обладает также и как минимум одним неприятным недостатком — ограниченным объемом. Что если нам захочется синхронизировать несколько десятков или даже сотен гигабайт? Ну или нам не захочется рисковать утечкой даже зашифрованных данных — ведь чисто в теории при должном упорстве пароль все же может быть подобран. Во всех эти случаях я порекомендую использовать опять же открытый софт — Syncthing. Поехали устанавливать!

Windows

В лучших линуксовых традициях Syncthing разделен на два компонента: собственно сам Syncthing — ядро, которое занимается работой где-то в фоне; и различные программы для управления ядром (или как правильнее говорить — «бэкендом»), которые пишут сторонние разработчики, позволяя команде Syncthing’а сосредоточиться на основном функционале и не парить себе мозг тем как это выглядит внешне для нас с вами.

Страшно? Да нет, все что нужно сделать человеку под виндой — зайти на сайт Syncthing: https://syncthing.net/, и скачать то что называется «Cross-platform GUI wrapper: Syncthing-GTK»

 

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

 

Linux

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

Для начала ставим Syncthing, как это написано на их сайте https://apt.syncthing.net/:

 
 
  1. sudo apt-get install apt-transport-https
  2. curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
  3. echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
  4. sudo apt-get update
  5. sudo apt-get install syncthing

Вуаля, бэкенд установлен, дело за фронтэндом. Для установки Syncthing-GTK идем на гитхаб: https://github.com/syncthing/syncthing-gtk, и там мы видим что для убунту и иже с ней есть PPA. Подключаем его и устанавливаем софтину:

 
 
  1. sudo add-apt-repository ppa:nilarimogard/webupd8
  2. sudo apt-get update
  3. sudo apt-get install syncthing-gtk

Запускаем Syncthing-GTK и проходим мастера настройки — давим «далее» до победного конца.

Видео на случай вопросов )

 

Синхронизация. Дружим компы и начинаем синкать.

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

Итак, первое что нужно сделать чтобы Syncthing имел возможность что-то синхронизировать — подружить наши компьютеры. Вернее Syncthing’и на низ, чтобы они оба доверяли друг другу. Для этого нажимаем на шестеренку в интерфейсе Syncthing-GTK на одной из машин, и выбираем «Show ID»:

Копируем ключ

На втором компьютере нажимаем аналогичную шестеренку и выбираем «добавить устройство», в открывшемся окне вставляем ключ в поле ID

Обратите внимание, что мы не ставим самую нижнюю галочку — она означает предоставление доступа к папке, которая создается при установке Syncthing в качестве папки по умолчанию. Но у нас уже есть то что мы хотим синхронизировать, так что дефолтная папка нам не понадобится. Нажимаем «Сохранить».

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

 

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

Нажимаем знакомую шестеренку и выбираем «Add shared folder» («Добавить новую папку»)

 

В появившемся окне выбираем папку, нажав кнопку «Browse» («Обзор»), и указываем произвольный «Folder label»

Переходим на вторую вкладку и ставим галочку напротив имени нашего второго компьютера

Сохраняем и ждем на втором компьютере предложения принять папку

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

Можно заметить, что интерфейс диалога несколько отличается от стандартного виндового, но заплутать в нем сложно. Создаем как и прежде папку в корне диска C:, и называем Sync.enc.

Теперь у нас полностью заполненное окно добавления папки, нажимаем сохранить.

Через несколько секунд главное окно Sincthing-GTK просигналит нам, что папка успешно синхронизирована

Последнее что нам остается, это вспомнить что папка эта зашифрована, а значит надо добавить ее в EncFSMP. Нажимаем «Open existing EncFS»

А дальше как при создании — путь к папке, произвольное имя, буква диска. Только пароль можно не указывать — тогда его будут спрашивать при попытке подключить эту папку (актуально на рабочем компьютере).

 

Последнее наглядное видео с демонстрацией синхронизации =)

 

Заключение

Повторю сказанное в начале — несмотря на кажущуюся монструозность этого всего текста, все описанные в нем операции займут не более 10-15 минут времени, особенно если речь идет о синхронизации только между виндовыми машинами. Связка EncFS и Syncthing обеспечивает безлимитное пространство для синхронизации и защиту данных даже в пределах одного компьютера за счет шифрования. Также я не рассматривал такие возможности Syncthing как: работа с несколькими (>2) устройствами и папками, при которой предоставляется выбор какие папки между какими устройствами синхронизируются; синхронизация в одну сторону; многоуровневая корзина/контроль версий для удаляемых или изменяемых файлов. В конце концов я не рассмотрел настройку Syncthing на Android, но она абсолютно ничем не отличается так как Syncthing и его настройки одинаковый на всех платформах. В качестве же приложения для работы с EncFS на этой платформе порекомендую EDS Lite.

 

Поделиться:
Метки: , , , , . Закладка Постоянная ссылка.

Комментарии запрещены.