Pull to refresh

Руководство по превращению флешки в центр синхронизации всего и вся

Reading time 4 min
Views 8.8K
Думаю, что у каждого человека, который пользуется несколькими компьютерами, рано или поздно появлялась потребность синхронизации данных между ними.

В моем случае данными были: заметки (созданные в прекрасном древовидном редакторe ZIM), логи мессенджера (Pidgin использует великолепный формат логов, очень удобный для синхронизации), настройки программ (любой пользователь Linux и не только согласится, что со временем конфигурационные файлы приобретают стоимость золота :) ), а так же мелкие и не очень bash скрипты, накопленные за несколько лет.
В данном руководстве я расскажу как решил проблемы синхронизации, защиты и восстановления в непредвиденных ситуациях этих данных. Конечно, решения эти не универсальны, не окончательны (они вырабатывались в течение нескольких лет и, возможно, будут еще меняться много раз), а для кого-то и вовсе примитивны, но на данный момент они удовлетворяют всем моим требованиям и, по моему мнению, достойны для опубликования. Надеюсь кто-то найдет здесь хоть что-нибудь полезное для себя! :)


Итак, начнем. Статью я разделил на несколько частей, а именно:

1. Постановка задачи
2. Контроль версий важных файлов
3. Защита данных
4. Установка portable программ для Windows
5. Бекап данных
6. Объединение всех действий в одно целое

Постановка задачи

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

После знакомства с Linux и его файловыми системами такие конфигурационные файлы переместились на место своей копии, а в нужное место была подложена ссылка (soft link) на этот файл.

Так же туда попали:

* Файл с паролям в формате keepass (Linux версия программы — KeePassX)
* Адресная книга в формате .vcf
* Заметки редактора ZIM
* Bash (и другие) скрипты
* А так же много всего другого и мелкого

После того, как у меня появилось два компьютера (рабочий и домашний лэптоп, на обоих установлен Debian Etch) возникла необходимость иметь точные копии этой папки на обоих компьютерах и синхронизировать сделанные изменения.
Со временем к списку добавилась таблетка Nokia N800 и Windows компьютер, за которым я бываю раз в неделю, но это не избавляет его от необходимости иметь тот же самый набор greasemonkey скриптов для Firefox, что и у остальных.

Контроль версий важных файлов

Я решил, что для папки saves будет недостаточно простой синхронизации, а лучше использовать какую-нибудь систему контроля версий, которые так любят программисты :)
После долгих сравнений выбор пал на Bazaar — распределенную систему контроля версий, поддерживаемую небезызвестной компанией Canonical.
Для нее всего лишь пришлось создать скрипт, который выполняет нужную мне последовательность действий: добавляет новые файлы в репозиторий, предлагает ввести коментарий для новых изменений (если они, конечно, есть) и объединить изменения с родительским репозиторием (для N800 это компьютер, для компьютера это флешка, а у флешки родительского репозитория нет).
Теперь я всегда имею одинаковую папку saves на всех компьютерах и в случае каких-либо сбоев могу вернуться к предыдущей версии любого файла.

Маленькое дополнение:
Очень часто, конфигурационные файлы программ кроме действительно конфигурации содержат всякие часто меняющиеся параметры. Например Firefox в файле с закладками сохраняет также и время последнего использования закладок, которое меняется каждый раз, когда какая-либо закладка используется. Понятно, что такие данные не нуждаются в синхронизации, поэтому я создал специальный скрипт prepare_saves, который удаляет их из файлов, а также материт разработчиков, которые такое делают :).

Защита данных

Так как папка saves уже содержит достаточное количество данных, которые я не хотел, чтобы попали в чужие руки про потере флешки, то это самое время задуматься о ее защите.
Благодаря хабру узнал о программе TrueCrypt. С ее помощью создал на флешке файл-контейнер размером 200 мб с файловой системой NTFS (почему именно NTFS — смотрите в следующем разделе) и переместил туда папку saves. Так как в данном случае цель шифрования не защита от ФСБ, а просто от попадания флешки в чужие руки, то защиты по паролю оказалось достаточно.
Хм… такой важный вопрос, а сказать больше и нечего :)

Установка portable программ для Windows

Так как иногда все-таки приходится пользоваться Windows-компьютерами, то сайт PortableApps.org стал для меня настоящей находкой. Любимые Firefox и Pidgin, а также еще некоторые программы прочно заняли свое место на защищенном разделе флешки.

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

Бекап данных

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

Для него было создано три профиля:

* Бекап всех данных на незащищенной части флешки (исключая зашифрованный файл-контейнер)
* Бекап всех защищенных данных (исключая папку saves)
* Синхронизация логов Pidgin

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

Объединение всех действий в одно целое

Теперь остается самое простое — написать скрипт, который объединит все шаги вместе. Его алгоритм очень прост:

1. Примонтировать защищенный раздел флешки
2. Синхронизировать логи Pidgin
3. Синхронизировать незащищенную часть флешки
4. Синхронизировать защищенную часть флешки
5. Выполнить prepare_saves для saves на флешке
6. Закомитить изменения saves на флешке
7. Выполнить prepare_saves для saves на диске.
8. Закомитить изменения saves на диске и отправить их на флешку
9. Отмонтировать защищенный раздел флешки

Теперь, при подключении флешки к компьютеру достаточно нажать на один ярлычок, ввести пароль для доступа к защищенному контейнеру, ввести, если требуется, коментарий к изменениям и… понять что вы потратили кучу времени на то, о чем другие люди даже не задумываются :)

Если кто-то желает посмотреть на исходники каких-либо моих скриптов или просто задать вопросы — welcome! Буду только рад ответить и помочь :)
Tags:
Hubs:
+35
Comments 43
Comments Comments 43

Articles