Linux

Файлообмен и резервирование данных на Linux сервере с помощью Dropbox

 

Опять Босс на работе сгенерировал очередное задание:
Имеем 2 офиса одной фирмы.

Задача:
Организовать файлообмен между ними.

У меня в голове возникло несколько решений этой задачи:

1) VPN туннель.
Такое решение слишком избыточно для простого файлообмена.

Плюсы:
Могут ходить в по сети в другой офис.
Лёгкость работы.
Шифрование данных
Сжатие данных

Из минусов:
Невозможно работать дома (я манагерам не доверяю, сертификаты не дам)
Нагрузка на интернет канал.
Из-за медленного канала возникнут тормоза при работе непосредственно с сетевой шары.
(можно конечно синхронизацию с локальной шарой сделать и пускай они с неё работают)
Избыточность для такой простой задачи.

2) FTP
Плюсы:
Простота реализации
Гибкие настройки
Можно работать дома

Минусы:

Сложность работы с FTP, манагеры этого точно не осилят.
Должен кто-то постоянно отгружать данные (Синхронизировать)

3) Подумав ещё немного я вспомнил про проект DropBox.
Особенно про Linux версию, которая может работать в качестве демона.


Плюсы:
Резервирование данных
Возможность отката
Можно работать из дома
Оптимизация интернет трафика
Шифрование данных
Сжатие данных перед отправкой
Абсолютная прозрачность для пользователя.

Минусы:

2 Гига места, но решается покупкой платного аккаунта.
Зависимость от сервиса.

Проанализировав эти три варианта я остановился на сервисе DropBox

Схема файлообмена:

Офис 1 <=> Samba шара <=> DropBox <=> internet <=> DropBox <=> Winodws шара (Офис 2)

Пояснения:

Папку ~/Dropbox я открою по сети через Samba сервер.
Всё что туда будет попадать, автоматически будет синхронизироваться с сервисом DropBox
Во втором офисе я ставлю Windows клиента DropBox и папку так-же открываю в сеть.

PS. Как вариант использования:
Можно например туда базы 1С разместить, и они будут бэкапиться автоматически.
Или просто туда какие-нидуь бэкапы скидывать или важные документы, всё зависит от Вашей фантазии.

Для начала нам требуется зарегистрировать на сервисе.
Сделайте одолжение:
Зарегистрируйтесь по моей реферальной ссылке, это даст мне и Вам дополнительное место (250 Мб)

Вот смотрю рефералы (Спасибо кто по ссылке регистрируется).

Для получения дополнительного места нужно выполнить 3 этапа:
1) Перейти по реферальной ссылке
2) Зарегистрироваться
3) Установить программу клиент Dropbox

Установка клиента DropBox на Linux без GUI

Если у Вас есть GUI на сервере, то для Вас задача существенно упрощается:

Вам просто нужно скачать один из архивов (ссылки ниже)

Например:

wget -O dropbox.tar.gz http://www.getdropbox.com/download?plat=lnx.x86


Разархивировать:

tar zxof dropbox.tar.gz

И перенисти полученные файлы в свою домашнюю директорию

mv .dropbox-dist ~/.dropbox-dist/

Запустить демона.

~/.dropbox-dist/dropboxd &

И заполнить данные своего аккаунта.

Я же работаю через с серверами удалённо через SSH и GUI мне вообще не нужен.

Приступаем:

Качаем подходящий архив для Вашего Linux’a (32 бита или 64 бита)

Поскольку у меня 32-х битная версия Linux, я разумеется выбрал 32-х битную версию

Качаем:

cd /tmp
wget -O dropbox.tar.gz http://www.getdropbox.com/download?plat=lnx.x86

Распаковываем:

tar zxof dropbox.tar.gz

И переносим полученные файлы в свою домашнюю директорию

mv .dropbox-dist ~/.dropbox-dist/

Далее нам потребуется пара программ на python’e

Качаем их:

wget http://dl.getdropbox.com/u/6995/dbmakefakelib.py
wget http://dl.getdropbox.com/u/6995/dbreadconfig.py (не обязателен)

Затем выполняем первую – dbmakefakelib.py

python dbmakefakelib.py

И видим такую строку:

dropboxd ran for 15 seconds without quitting – success?

Значит всё прошло хорошо.

Идём дальше.

Выполняем вторую программу dbreadconfig.py
Она нам нужна, что-бы узнать HostID

python dbreadconfig.py

host_id = 739bfe362f3bb3246da99dc8d20dbe2b
last_revision = None
schema_version = 6

Лично у меня эта программа не запустилась.
Решено было воспользоваться вторым способом: через sqlite

cd .~/.dropbox

Выполняем:

sqlite3 dropbox.db

SQLite version 3.6.11
Enter «.help» for instructions
Enter SQL statements terminated with a «;»
sqlite>

Вводим:

.dump config

И в ответ получаем что-то типа этого:


BEGIN TRANSACTION;
CREATE TABLE config (
id INTEGER PRIMARY KEY,
key TEXT NOT NULL UNIQUE,
value TEXT
);
INSERT INTO "config" VALUES(1,'schema_version','STYKLg==
');
INSERT INTO "config" VALUES(2,'last_revision',NULL);
INSERT INTO "config" VALUES(3,'host_id','VmJjYTZiY9Y2MGY1OGExMjA5ODc0ODU6NWZmMzNhY2VmCnAxCi7=
');
COMMIT;

Нас интересует вот это, у Вас будет своё значение (в примере я исказил свои данные):

VmJjYTZiY9Y2MGY1OGExMjA5ODc0ODU6NWZmMzNhY2VmCnAxCi7=

Это и есть идентификатор Вашего хоста, но он зашифрован по технологии Base64

Ну что ж, расшифруем:

Способ 1:

Используем интернет.
Идём по ЭТОЙ ссылке и вставляем туда наше значение.

Способ 2:

Без соединения с интернетом.
Воспользуемся утилитой base64
Делаем так:

echo «VmJjYTZiY9Y2MGY1OGExMjA5ODc0ODU6NWZmMzNhY2VmCnAxCi7=» > /tmp/enc.txt
base64 -d /tmp/enc.txt

В результате любого способы мы получим например такое значение:

Vbca6bc60f58a120987485р5ff33acef

Отбрасываем буквы V спереди и получаем такое значение:

bca6bc60f58a120987485р5ff33acef

Это и есть на HOSTID

Идём по ссылке:
https://www.getdropbox.com/register?host_id=HOSTID

Это можно сделать с любого ПК подключённого к интернету, не обязательно с сервера.

HOSTID нужно заменить на свой, полученный на предыдущим шаге.
В наше случае будет такая ссылка:

https://www.getdropbox.com/register?host_id=bca6bc60f58a120987485р5ff33acef

Далее просто вводим своё имя и пароль, снизу будет имя Вашего сервера.
После авторизации Ваш хост будет добавлен в список хостов.
Повторите данную операцию для всех ПК, которые будут использовать в файлообмене.

Осталось совсем немного, создать папку Dropbox в своей домашней директории:

mkdir ~/Dropbox

И запустить демона.

~/.dropbox-dist/dropboxd &

Ну и разумеется написать скрипты для автостарта, примеры для Gentoo, Fedora/RedHat, Debian Вы можете посмотреть в Источнике

Всё, теперь можно насаждаться всеми прелестями сервиса DropBox

UPD:
Заметил, DropBox не синхронизирует файлы и папки с русскими именами.
Причём именно Linux клиент, хотя у меня вся система работает в юникоде.
Надеюсь, в будущем профиксят.

Вернуться Назад