The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Организация файлового хранилища на базе Git-репозитория при помощи Sparkleshare
В рамках проекта 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/
 
29.05.2011 , Источник: https://mairin.wordpress.com/2011/0...
Ключи: sparkleshare, git, storage, file, sync / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Системы контроля версий и управления исходными текстами

Обсуждение [ RSS ]
  • 1.1, Аноним (-), 20:25, 29/05/2011 [ответить]  
  • +/
    Очень не хватает клиента под виндовс. Вроде на моно, должны быстро сдлеать.
     
     
  • 2.2, artem.stecenko (ok), 21:56, 29/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    TortoiseGit не катит?
     
     
  • 3.3, Аноним (-), 22:30, 29/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Надо попробовать. Оно обратно совместимо с гит? Те никакие метадаты свои не пишет, просто морда для него? (я про спарклшар)
     
  • 2.4, Crazy Alex (??), 20:41, 30/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    На Mono??? Может, я чего-то не понимаю в этой жизни, но с какого перепугу там нужно что-то боьшее, чем FUSE-base custom FS на две-три тысячи строк на C? В крайнем случае, пара скриптов, встраиваемый в контекстное меню файлового менеджера (хотя средствами FUSE явно можно обойтись).

    Хотя с клиентом по windows, конечно, в таком случае будет тяжко. И поделом :-)

    Или они там протокол Git с нуля реализовали? Тогда - точно редкостный идиотизм.

     
     
  • 3.5, Аноним (-), 17:58, 31/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/hbons/SparkleShare/graphs/languages

    Ну может нравится им си-шарп :)

     

  • 1.6, Аноним (6), 16:00, 30/03/2012 [ответить]  
  • +/
    Грандиозно! Обязательно возьму на заметку и попробую так как функцианальности DropBox мне явно уже не хватает. Спасибо.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру