Виталий Банковский
Синхронизируем данные между компьютерами
с помощью сервисов сетевого хранения
С появлением недорогих лаптопов и тем более ультрадешевых неттопов эти «создания» начали плодиться во всех местах моего обитания – дома, в офисе, на даче, диване и так далее. И тогда начались проблемы с синхронизацией данных между компьютерами. Знакомо?
И вот тогда, чтобы окончательно не сойти с ума с синхронизацией данных на всех этих устройствах, я задался вопросом, как хранить на каждом из них актуальную копию моих данных. Хранение данных на одном сервере или постоянное копирование данных с помощью rsync я отмел как неудобное и, как следствие, неработающее решение.
Немного побродив по Интернету, я обнаружил, что шустрые предприниматели мира сего уже пришли мне на помощь с тремя наиболее интересными продуктами:
- DriveBox;
- LiveDrive;
- SkyDrive.
Краткие сравнительные характеристики смотрите в таблице.
Сравнение сервисов сетевого хранения
|
DropBox
|
LiveDrive
|
SkyDrive
|
Windows
|
Да
|
Да
|
Да
|
Linux
|
Да
|
Нет
|
Нет
|
MacOS
|
Да
|
Нет
|
Нет
|
Шифрование между клиентом и сервисов
|
Да
|
Да
|
Да
|
Шифрование данных на стороне сервиса
|
Да
|
Нет
|
Нет данных
|
Субьективная оценка сервиса
|
4
|
0
|
0
|
Увы, я не смог дать 5 баллов сервису DropBox по причине отсутствия асимметричного шифрования.
Будучи заядлым пользователем операционной системы Linux, я похоронил для себя LiveDrive и SkyDrive и приступил к использованию программы DropBox.
В начале эксплуатации я также поставил себе задачу, чтобы на сервис хранения данных мои файлы отправлялись в зашифрованном виде.
Начало работы
Стоит отметить легкость установки клиента DropBox даже на Linux-подобных системах. Для того чтобы начать использовать систему, нужно проделать всего несколько шагов:
- Зарегистрироваться на сайте http://drivebox.com.
- Скачать и установить, следуя инструкциям на сайте поставщика, клиентское программное обеспечение, предварительно получив его с вышеуказанного сайта.
- Перезапустить менеджер файлов Nautilius.
При этом в домашней папке пользователя появится каталог .DriveBox, в который и нужно размещать файлы для их синхронизации с другими компьютерами.
Безопасность
Как я уже говорил, при стандартном использовании наши данные попадают на сервис DropBox и уже там шифруются. Конечно, при таком способе хранения есть вероятность сбоя сервиса, и данные могут быть доступны другим пользователям, не говоря уже о ситуациях, когда данные с сервиса воруют хакеры или инсайдеры. Для устранения этого недостатка воспользуемся богатыми возможностями семейства Linux, а именно – программой cryptfs. Эта программа позволяет прозрачно шифровать каталоги, причем зашифрованные файлы и каталоги также представлены в виде файлов и каталогов.
Итак, приступим. В папке ~/.Dropbox/ создаем каталог Private, куда будут размещаться наши уже зашифрованные данные. Также создаем каталог, например, ~/Dropbox.Open, куда мы будем размещать наши файлы в открытом виде. Затем монтируем каталог ~/Dropbox/Private на каталог ~/Dropbox.Open с помощью программы encfs:
encfs ~/.Dropbox/Private ~/Dropbox.Open
Если такая процедура происходит в первый раз, то будет задан вопрос по выбору глубины шифрования, и также будет предложено задать пароль для шифрования данных. Аналогично повторяем процедуры установки и монтирования на всех остальных компьютерах, которые должны содержать синхронизированные данные.
Использование зашифрованных данных
Для того чтобы программы на разных компьютерах использовали данные из сетевого хранилища, необходимо перенести файлы этих программ в папку ~/Dropbox.Open. Например, для синхронизации системы мгновенных сообщений licq мы переносим папку ~/.licq в каталог ~/Dropbox.Open и создаем символическую ссылку:
mv ~/.licq ~/Dropbox.Open/
ln -s ~/Dropbox.Open/.licq ~/.licq
Аналогично поступаем и с остальными нашими программами.
Повышаем безопасность
Будучи системным администратором, я все-таки побоялся расположить наиболее критичные данные на публичном сервере, пусть даже и в зашифрованном виде. Причин для этого несколько:
- Так как на сервере будут хранится файлы стандартных программ, то злоумышленнику будет проще взломать пароль, если он возьмет зашифрованный файл с сервиса DropBox и незашифрованный стандартный файл, используемый в одной из наших программ.
- Сохранность данных. Если сотрудники вашей компании пользуются таким сервисом, то невозможно централизованно управлять созданием архивных данных пользователей.
- Политика безопасности многих компаний запрещает размещать важные данные в каком-либо виде на серверах сторонних компаний.
При наличии «собственного» защищенного сервера и канала VPN для подключения к этому серверу можно использовать кеширующую файловую систему Coda.
Coda использует локальный кеш для доступа к данным, когда сетевое подключение к серверу потеряно, при этом сохраняя список изменений в локальных файлах. Когда соединение восстановлено, локальный клиент Coda синхронизирует локальные данные с сервером.
С программой можно ознакомиться на домашней странице проекта по адресу http://www.coda.cs.cmu.edu, а теперь мы сосредоточимся на процедурах установки, настройки и использования.
На своих рабочих компьютерах я использую Debian, тогда как мой «собственный» сервер с Coda работает под дистрибутивом CentOS, поэтому описание процедуры установки и настройки будет ориентировано на эти дистрибутивы. При таком «зоопарке» мне пришлось обратится к установке программы Coda из исходных кодов.
Процедура установки программы Coda
Программа Coda состоит из трех подсистем:
- серверная часть;
- клиентская часть;
- поддержка в ядре на сервере и клиенте.
Установка и настройка серверной части
Предварительно получаем и устанавливаем следующие библиотеки:
Эти библиотеки доступны по адресу ftp://ftp.coda.cs.cmu.edu/pub/coda/linux/src и устанавливаются стандартным способом, последовательно выполняя три команды:
./configure
make
make installing
Включение поддержки Coda в ядре системы Linux
Модуль поддержки файловой системы Coda входит в стандартное ядро Linux, включение которого находится в разделе File systems, Network filesystem. На момент написания статьи я использовал ядро Linux версии 2.6.24.2 на клиенте и 2.6.22.12 на сервере. После включения поддержки необходимо загрузить модуль в ядро или перегрузить сервер, если этот модуль «coda» вкомпилирован в новое ядро.
Установка и настройка демона Coda
Как обычно, получаем исходные коды демона Coda по адресу ftp://ftp.coda.cs.cmu.edu/pub/coda/linux/src, компилируем и устанавливаем:
tar -xzvf coda-x.x.x.tar.gz
cd coda-x.x.x
./configure
make
make install
На момент написания статьи была использована версия 6.9.4 демона Coda.
Далее нам необходимо настроить серверную часть программы Coda. Для этого в состав программы входит утилита vice-setup, которая при запуске задаст несколько вопросов:
Путь, где программа Coda будет хранить свои рабочие файлы:
What is the root directory for your coda server(s)? [/vice] |
Является ли данный сервер главным сервером. Программа Coda поддерживает многосерверную конфигурацию в режиме репликации:
Is this the master server, aka the SCM machine? (y/n) y |
Настройка идентификации для коммуникации между несколькими серверами Coda и между клиентом Coda и сервером:
Пароль для идентификации между серверами Coda:
Enter a random token for update authentication : ********** |
Пароль, который должны указывать клиенты для идентификации на сервисе Coda:
Enter a random token for auth2 authentication : *********** |
Пароль, который нужно использовать при работе с утилитой volutil. Эта утилита с помощью вызовов RPC позволяет удаленно работать с томами файловой системы Coda.
Enter a random token for volutil authentication : ********** |
Так как я являлся единственным пользователем, то использовал один и тот же пароль для всех трех подсистем идентификации. Подробнее о системе репликаций файловой системы Coda и об управлении томами можно прочитать на домашней странице проекта по адресу http://www.coda.cs.cmu.edu.
Идентификатор данного сервера Coda, произвольное между 0 и 255, исключая 0,127 и 255. Я использовал 100.
Enter an id for the SCM server. (hostname server.domain.com)
The serverid is a unique number between 0 and 255.
You should avoid 0, 127, and 255.
serverid: 100
|
Создание учетной записи администратора Coda. Нужно указать ID и имя учетной записи пользователя, который уже существует в системе:
Enter the uid of this user: 1000
Enter the username of this user: cooluser
|
Указание имени файла, где будут храниться лог-файлы. Coda поддерживает разделы raw на системах хранения и обычные файлы на файловой системе.
What will be your log file (or partition)? /home/coda/log |
Задание файла, где будут храниться данные:
Where is your data file (or partition)? /home/coda/data |
Далее будут заданы вопросы про размер данных и максимального количества файлов, затем утилита завершит настройки и запустит серверные подсистемы программы Coda.
Если все нормально было установлено и настроено, то мы должны получить сообщение об успешной установке и запуске серверной части программы Coda:
That seems to have worked...
If you have a working Coda client you should now be able to
access the new Coda realm
- cfs lv /coda/servername.domain.com/
enjoy Coda.
for more information see http://www.coda.cs.cmu.edu.
|
Установка и настройка программы Coda на клиентском компьютере
Аналогично устанавливаем библиотеки LWP, RPC2, RVM, программу Coda, включаем поддержку файловой системы Coda в ядре.
Далее необходимо настроить и подключиться к серверу с сервисом Coda с помощью утилиты venus-setup:
venus-setup servername.domain.com
где servername.domain.com – имя сервера или IP-адрес сервера, где мы установили сервис Coda. При запуске программы будут заданы два вопроса:
Имя сервера, которое мы уже указали в качества параметра для утилиты venus-setup:
Default realm for authentication: |
Размер локального кэша (эквивалентен размеру хранимых на сервере данных) в килобайтах:
Amount of diskspace used for caching: |
По завершении работы этой утилиты можно увидеть следующее сообщение:
22:25:17 Mounting root volume...
22:25:17 Venus starting...
22:25:17 /coda now mounted. |
Это значит, что файловая система Coda успешно смонтирована в каталог /coda. Но перед началом работы необходимо пройти идентификацию на сервере, чтобы мы могли записывать в этот каталог. Для этого существует утилита clog, которая запускается следующим образом:
clog username
где username – имя учетной записи пользователя службы Coda на сервере Coda. При этом будет запрошен пароль, причем нужно использовать тот же пароль, который был задан при настройке программы Coda на сервере:
Enter a random token for auth2 authentication:
Если все было сделано правильно, то наше хранилище на сервере будет смонтировано в каталог /coda/servername.domain.com/. В этот каталог и нужно записывать наши данные, которые должны быть синхронизированы между компьютерами.
Также существует возможность использования клиента Coda для семейства операционных систем Windows XP, NT, используя среду Cygwin. Более подробно об этом можно почитать по адресу http://www.coda.cs.cmu.edu/windowsnt.html. У меня не было возможности рассказать об этом подробнее по причине «финальной кончины» Windows XP на моем компьютере.
В этой статье я показал два подхода к синхронизации данных между несколькими компьютерами, и вам решать, какой из вариантов наиболее подходит в вашей ситуации.
- http://www.coda.cs.cmu.edu.
- http://en.wikipedia.org/wiki/Coda_(file_system).
- http://dropbox.com.
- http://skydrive.com.
- http://www.livedrive.com.
- http://www.coda.cs.cmu.edu/windowsnt.html.