В рамках проекта Sparkleshare развивается свободный движок для организации
похожих на Dropbox online-хранилищ, непосредственное хранение данных в которых
осуществляется в любом Git-репозитории. Использование Git позволяет
задействовать элементы версионного контроля для отслеживания изменений в
файлах, давая возможность отследить все изменения и при необходимости вернуться
к состоянию определенного файла в прошлом.
С технической стороны SparkleShare является Git-клиентом, оптимизированным для
хранения и обмена файлами. Программа может использоваться не только для
хранения своих файлов, но и для организации обмена файлами с другими людьми или
для обеспечения синхронизации данных между домашним и рабочим ПК. SparkleShare
поддерживает шифрование хранимых данных, что позволяет использовать публичные
Git-репозитории не опасаясь возможной утечки информации. Например, можно
использовать Git-репозитории в публичных сервисах Gitorious и GitHub.
Рассмотрим процесс развертывания Sparkleshare-хранилища под управлением Fedora
Linux с целью организации доступного дома и на работе хранилища. Для
организации рабочего процесса создадим в домашней директории каталог
Sparkleshare, в котором будем создавать подкаталоги, соответствующие текущим
проектам. В качестве первичного хранилища будет использовать Git-репозиторий на
собственном сервере, доступ к которому организован через SSH. Одновременно
настроим на сервере доступность сохраняемых файлов через web, разместив клон
репозитория в директории ~/public_html.
Установка Sparkleshare на локальной клиентской машине.
Добавляем соответствующий YUM-репозиторий, в котором содержатся готовые пакеты с Sparkleshare:
cd /etc/yum.repos.d
sudo curl -O http://repos.fedorapeople.org/repos/alexh/sparkleshare/fedora-sparkleshare.repo
Устанавливаем Sparkleshare
sudo yum install -y sparkleshare ssh-askpass
Удаляем пакет nautilus-python, так как иначе при работе Sparkleshare наблюдается крах Nautilus.
sudo yum remove -y nautilus-python
PS. Пользователи Ubuntu могут загрузить Sparkleshare из PPA-репозитория:
sudo add-apt-repository ppa:pdffs/sparkleshare
sudo apt-get update
sudp apt-get install sparkleshare
Настройка Git-репозитория
Создаем Git-репозиторий на внешнем сервере, который будет использован в
качестве первичного хранилища:
git init --bare repo.git
Для работы на сервере должны быть установлены пакеты с git и openssh-server.
Проводим первичное клонирование репозитория в директорию ~/public_html, чтобы
файлы были доступны через web:
cd ~/public_html
git clone repo.git
cd repo
Создаем тестовый файл:
echo 'Fedora 15 rocks!' >> test.txt
Добавляем файл в Git и принимаем изменения.
git add test.txt
git commit test.txt -m 'initial commit2'
Создаем начальную ветку:
git push origin master
Подключаем свои локальные машины к репозиторию
На локальной рабочей машине останавливаем рабочий процесс Sparkleshare и
клонируем созданный на прошлом шаге репозиторий
sparkleshare stop
cd ~/SparkleShare
git clone логин@хост:/home/логин/repo.git
Проверяем содержимое:
cd ~/SparkleShare/repo
ls
Меняем содержимое тестового файла
echo 'Pandas rule.' >> test.txt;
Применяем изменения:
git commit -a -m 'panda PSA'
git push
На удаленном сервере, где создан базовый Git-репозиторий принимаем изменения:
cd ~/public_html/repo
git pull
Проверяем, изменилось ли содержимое test.txt:
cat test.txt
Если все работает нормально, то запускаем на локальной машине Sparkleshare
которые возьмет в свои руки выполнение рутинных операций по отслеживанию
изменений и синхронизации данных на внешний сервер.
sparkleshare start
Настраиваем автозапуск Sparkleshare в GNOME:
cp /usr/share/applications/sparkleshare.desktop ~/.config/autostart
Заходим в директорию с репозиторием SparkleShare
cd ~/SparkleShare/repo
и создаем там новый тестовый файл:
echo '42' >> theanswer.txt
На удаленном сервере клонируем репозиторий и убеждаемся, что новый файл
автоматически был помещен в Git:
cd ~/public_html/repo
git pull
ls
Все работает.
Создаем автоматически обновляемое зеркало для просмотра репозитория из web.
Настроим автоматическое клонирование репозитория удаленном сервере, с которого
будет осуществлена раздача файлов через Web. Для работы нам понадобиться
настроить удаленный вход со второй машины на первую по SSH по ключам, без ввода
пароля. Инструкцию по настройке можно найти здесь.
На удаленном сервере переходим в базовую директорию с Git-репозиторием (не клоном)
cd ~/git.repo/hooks
Добавляем скрипт, который будет срабатывать при добавлении файлов в
репозиторий. В этом скрипте автоматически будет выполнять локальное
клонирование репозитория для его видимости в web.
Создадим скрипт post-receive в директории ~/git.repo/hooks (не забудьте
подставить реальное значение вместо "логин"):
#!/bin/sh
while read oldrev newrev refname
do
true
done
cd /home/user/public_html/repo
GIT_DIR=/home/логин/public_html/repo/.git git pull
Проверим, создав на локальной системе третий тестовый файл:
cd ~/SparkleShare/repo
echo 'Fedora 15' >> latestfedora.txt
Переходим на удаленном сервере в директорию с клоном репозитория для web и
проверяем появился ли новый файл:
cd ~/public_html/repo
ls
Подсказки по настройке работы Sparkleshare c Github и Gitorious можно найти на
странице http://sparkleshare.org/help/
|