De la pluie et du beau temps - Mot-clé - sauvegardeBlog de silvyn. Promoteur de logiciels libres depuis 2004.2021-08-28T11:27:29+02:00Silvyn!urn:md5:3edb5cc4619f6408089936d939ab7b9eDotclearSauvegarde en ligne automatique de fichiers avec Sparkleshare sous Fedoraurn:md5:89bb2a76a45fc76bd9e8607f3f9de4012011-06-02T13:42:00+02:002011-06-02T21:42:40+02:00Sylvain NaudinFedoraAlwaysdatacloudFedoraGitsauvegardeSparklesharessh <p>J'ai lu récemment un billet chez <strong>Máirín Duffy</strong> : <a href="http://mairin.wordpress.com/2011/05/25/fedora-sparkleshare-howto/" hreflang="en" title="Version-controlled, automagical backup and file sharing system with Sparkleshare and Fedora">Version-controlled, automagical backup and file sharing system with Sparkleshare and Fedora</a> <sup>[<a href="https://silvyn.naudin.cc/?post/2011/06/02/Sauvegarde-en-ligne-automatique-de-fichiers-avec-Sparkleshare-sous-Fedora#pnote-812-1" id="rev-pnote-812-1">1</a>]</sup>.<br />
Mis de côté, j'ai pris le temps aujourd'hui de mettre en œuvre cette solution sur mon pc sous <a href="https://silvyn.naudin.cc/?tag/Fedora">Fedora</a> et mon hébergeur <a href="https://www.alwaysdata.com/" hreflang="fr" title="Alwaysdata">Alwaysdata</a>.</p>
<p><em>NB : Ce billet n'est pas vraiment une traduction, mais le contenu est en très grande partie repris du blog de Máirín.</em></p>
<p>Ce dont vous avez besoin :</p>
<ul>
<li>un PC sous Fedora, par exemple <a href="https://silvyn.naudin.cc/?post/2011/05/13/Fedora-15-et-Gnome3" hreflang="fr" title="Alwaysdata">Fedora 15</a></li>
<li><a href="http://sparkleshare.org" hreflang="en" title="http://sparkleshare.org">SparkleShare</a> : logiciel libre écrit en Mono <sup>[<a href="https://silvyn.naudin.cc/?post/2011/06/02/Sauvegarde-en-ligne-automatique-de-fichiers-avec-Sparkleshare-sous-Fedora#pnote-812-2" id="rev-pnote-812-2">2</a>]</sup> qui assurera le transfert de fichier sur votre serveur</li>
<li>un hébergement supportant Git, ça tombe bien, c'est le cas d'Alwaysdata</li>
<li>ssh, pour le transfert des fichiers sur le serveur</li>
</ul>
<p><a href="https://silvyn.naudin.cc/public/logo/sparkleshare-logo.png" title="sparkleshare-logo.png"><img src="https://silvyn.naudin.cc/public/logo/sparkleshare-logo.png" alt="sparkleshare-logo.png" style="display:block; margin:0 auto;" title="sparkleshare-logo.png, juin 2011" /></a></p>
<h4>Installation de Sparkleshare</h4>
<p>Comme indiqué dans le billet de Máirín, il existe un <a href="http://repos.fedorapeople.org/repos/alexh/sparkleshare/" hreflang="en" title="dépôt Fedora pour Sparkleshare">dépôt</a> pour Fedora 13, 14 et 15 (ce n'est toutefois pas encore le dernier paquet).</p>
<p>Ouvrir un terminal avec les droits administrateur et configurer le dépôt :</p>
<pre>
$ su
# cd /etc/yum.repos.d
# curl -O http://repos.fedorapeople.org/repos/alexh/sparkleshare/fedora-sparkleshare.repo
</pre>
<p>Puis installer Sparkleshare et le paquet ssh-askpass</p>
<pre>
# yum install sparkleshare ssh-askpass
</pre>
<h4>Accéder en ssh à votre compte Alwaysdata</h4>
<p>Je vous laisse en compagnie de la documentation disponible sur le wiki d'Alwaysdata : <a href="http://wiki.alwaysdata.com/wiki/Se_connecter_en_SSH" hreflang="fr" title="Se connecter en SSH">Se connecter en SSH</a>.</p>
<p>Il peut être utile voire indispensable de rajouter sa clé publique sur votre serveur distant. Consultez l'article <a href="http://wiki.alwaysdata.com/wiki/Se_connecter_en_SSH_avec_sa_cl%C3%A9_publique" hreflang="fr" title="Se connecter en SSH avec sa clé publique">Se connecter en SSH avec sa clé publique</a>.</p>
<p>Vous pourrez ainsi vous connecter à votre serveur sans devoir saisir de mot de passe :</p>
<pre>
$ ssh votreuser@ssh.alwaysdata.com
</pre>
<h4>Configuration du dépôt Git principal</h4>
<p>Restons connecté à notre serveur distant. Nous allons créer notre dépôt git et se déplacer dans le répertoire (le répertoire git était déjà créé à la racine de mon répertoire) :</p>
<pre>
$ ls
admin cgi-bin git www
</pre>
<p>Je vais nommer mon dépôt <em>moncloud</em>.</p>
<pre>
$ mkdir -p git/moncloud.git
$ cd git/moncloud.git
</pre>
<p>Initialiser le dépôt :</p>
<pre>
$ git --bare init
</pre>
<p>Ce qui nous renvoie le résultat de la commande :</p>
<pre>
Initialized empty Git repository in /nfs/http4/votreuser/git/moncloud.git/
</pre>
<h4>Configuration du clone de votre dépôt git</h4>
<p>Nous allons maintenant cloner notre dépôt, pour que les fichiers mis en ligne puisse être accessible depuis une URL de votre domaine.</p>
<pre>
$ cd ~/www
$ git clone ~/git/moncloud.git/
</pre>
<p>Si tout se passe bien, nous avons le retour suivant :</p>
<pre>
Initialized empty Git repository in /nfs/http4/votreuser/www/moncloud/.git/
warning: You appear to have cloned an empty repository.
</pre>
<p>Ci-après, je ne fait que suivre le test de Máirín pour vérifier que mon dépôt git fonctionne, avec diverses commandes :</p>
<pre>
$ cd moncloud/
$ echo 'Premier fichier' >> test.txt
$ git add test.txt; git commit test.txt -m 'Premier import'
[master (root-commit) 7d28ec2] Premier import
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 test.txt
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 226 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /home/votreuser/git/moncloud.git/
* [new branch] master -> master
</pre>
<p>On peut à présent sortir de la session ssh :</p>
<pre>
$ exit
logout
Connection to ssh.alwaysdata.com closed.
</pre>
<h4>Paramétrer votre système local avec votre serveur git distant</h4>
<p>Si Sparkleshare fonctionne, fermez le programme, et se positionner dans le répertoire Sparkleshare qui a été créé dans votre <em>home</em> :</p>
<pre>
$ sparkleshare stop
Stopping SparkleShare... Done.
$cd ~/SparkleShare
</pre>
<p>Clonons le dépôt git distant.</p>
<pre>
$ git clone ssh://votreuser@ssh.alwaysdata.com/home/votreuser/git/moncloud.git
Cloning into moncloud...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), 226 bytes, done.
</pre>
<p>Avec Nautilus, dans le répertoire /home/utilisateur/SparkleShare/moncloud, vous devriez voir le fichier test.txt que nous avons créé tout à l'heure via ssh sur le serveur distant. Ou alors en ligne de commande :</p>
<pre>
$ cd ~/SparkleShare/moncloud; ls
Modifions donc ce fichier pour vérifier que les modifications seront répliquées sur le serveur distant :
</pre>
<p>$ echo 'Pandas rule.' >> test.txt; git commit -a -m 'panda PSA'; git push</p>
<pre>
1 files changed, 1 insertions(+), 0 deletions(-)
Counting objects: 5, done.
Writing objects: 100% (3/3), 266 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://votreuser@ssh.alwaysdata.com/home/votreuser/git/moncloud.git
7d28ec2..88a31fc master -> master
</pre>
<p>Direction notre serveur distant cloné :</p>
<pre>
$ ssh votreuser@ssh.alwaysdata.com
$ cd ~/www/moncloud
$ git pull
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /home/votreuser/git/moncloud
7d28ec2..88a31fc master -> origin/master
Updating 7d28ec2..88a31fc
Fast forward
test.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
</pre>
<p>Vous devriez voir en ligne votre fichier via son URL, par exemple http://votreuser.alwaysdata.net/moncloud/, avec son contenu modifié :</p>
<pre>
Premier fichier
Pandas rule.
</pre>
<p>Ou en ligne de commande à partir de votre terminal ssh :</p>
<pre>
$ cat test.txt
Premier fichier
Pandas rule.
</pre>
<h4>Retour à Sparkleshare</h4>
<p>Lancer Sparkleshare via son raccourci dans Activités/Applications de Gnome3 ou en ligne de commande :</p>
<pre>
sparkleshare start
</pre>
<p>La ligne de commande vous permettra de vérifier que la synchronisation s'effectue bien.</p>
<p>Si l'on regarde les dernières activités de Sparkleshare, on peut constater la création du fichier test et sa mise à jour :</p>
<p><a href="https://silvyn.naudin.cc/public/captures/Sparkleshare_evenements_moncloud.png" title="Sparkleshare_evenements_moncloud.png"><img src="https://silvyn.naudin.cc/public/captures/.Sparkleshare_evenements_moncloud_s.jpg" alt="Sparkleshare_evenements_moncloud.png" style="display:block; margin:0 auto;" title="Sparkleshare_evenements_moncloud.png, juin 2011" /></a></p>
<p>Si en local vous ajoutez à présent un fichier dans le répertoire /home/utilisateur/SparkleShare/moncloud, une image par exemple (roses.jpg) vous devriez le voir apparaître en ligne avec un rafraîchissement du dépôt git :</p>
<pre>
$ cd ~/www/moncloud/
$ git pull
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /home/votreuser/git/moncloud
88a31fc..ccd7a99 master -> origin/master
Updating 88a31fc..ccd7a99
Fast forward
roses.jpg | Bin 0 -> 176487 bytes
1 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 roses.jpg
</pre>
<h4>Automatiser la mise à jour du serveur distant</h4>
<p>De fait, vous pourrez ainsi sauvegarder vos fichiers en local, et sous la surveillance de SparkleShare, les fichiers seront copiés sur votre serveur web et disponibles au travers de l'URL de votre site comme vu précédemment.</p>
<p>Accédez au répertoire <em>hooks</em> de votre dépôt git principal (pas le clone) :</p>
<pre>
$ cd ~/git/moncloud.git/hooks
</pre>
<p>En anglais, <em>hook</em> est un crochet/hameçon. Cela va nous permettre de d'automatiser la récupération des fichiers locaux sur le serveur distant.
Créez un fichier nommé <em>post-receive</em> dans le répertoire ~/git/moncloud.git/hooks, et y copier/coller les lignes suivantes (adapter votre user) :</p>
<pre>
#!/bin/sh
while read oldrev newrev refname
do
true
done
cd /home/votreuser/www/moncloud
GIT_DIR=/home/votreuser/www/moncloud/.git git pull
</pre>
<p>Voilà, normalement c'est tout bon.<br />
Copiez un nouveau fichier dans le répertoire local de Sparkleshare, une deuxième image <em>bouquet.jpg</em> par exemple.<br />
Nous avons bien notre nouveau fichier en ligne sur le serveur distant :</p>
<pre>
$ ls
bouquet.jpg roses.jpg test.txt
</pre>
<p><a href="https://silvyn.naudin.cc/public/captures/Sparkleshare_Evenements_2.png" title="Sparkleshare_Evenements_2.png"><img src="https://silvyn.naudin.cc/public/captures/.Sparkleshare_Evenements_2_s.jpg" alt="Sparkleshare_Evenements_2.png" style="display:block; margin:0 auto;" title="Sparkleshare_Evenements_2.png, juin 2011" /></a></p>
<p>Y'a plus qu'à lancer Sparkleshare automatiquement à l'ouverture de la session Gnome si vous le souhaitez :</p>
<pre>
$ cp /usr/share/applications/sparkleshare.desktop ~/.config/autostart
</pre>
<p>Done !</p>
<p>Pour les plus courageux <sup>[<a href="https://silvyn.naudin.cc/?post/2011/06/02/Sauvegarde-en-ligne-automatique-de-fichiers-avec-Sparkleshare-sous-Fedora#pnote-812-3" id="rev-pnote-812-3">3</a>]</sup>, ou si comme moi vous débutez, voici d'autres ressources que j'ai lu :</p>
<ul>
<li><a href="http://wiki.alwaysdata.com/wiki/Configurer_Gitweb" hreflang="fr" title="Configurer Gitweb">Configurer Gitweb (wiki d'Alwaysdata)</a></li>
<li><a href="http://www.tutoriaux-rails.com/articles/mettre-en-ligne-un-site-chez-alwaysdata-avec-git-et-capistrano/" hreflang="fr" title="Mettre en ligne un site chez Alwaysdata avec Git et Capistrano">Mettre en ligne un site chez Alwaysdata avec Git et Capistrano</a></li>
<li><a href="https://github.com/hbons/SparkleShare/wiki/How-to-set-up-your-own-server" hreflang="en" title="How to set up your own server">How to set up your own server</a></li>
<li><a href="http://www.siteduzero.com/tutoriel-3-254198-gerez-vos-codes-source-avec-git.html" hreflang="fr" title="Gérez vos codes source avev Git, site du Zéro">Gérez vos codes source avec Git</a></li>
<li><a href="https://fedoraproject.org/wiki/How_to_connect_to_the_design_team_sparkleshare" hreflang="en" title="How to connect to the design team Fedora sparkleshare">How to connect to the design team sparkleshare</a></li>
</ul>
<div class="footnotes"><h4>Notes</h4>
<p>[<a href="https://silvyn.naudin.cc/?post/2011/06/02/Sauvegarde-en-ligne-automatique-de-fichiers-avec-Sparkleshare-sous-Fedora#rev-pnote-812-1" id="pnote-812-1">1</a>] j'adore ce mot <a href="http://en.wiktionary.org/wiki/automagical" hreflang="fr" title="Automagical">automagical</a> !</p>
<p>[<a href="https://silvyn.naudin.cc/?post/2011/06/02/Sauvegarde-en-ligne-automatique-de-fichiers-avec-Sparkleshare-sous-Fedora#rev-pnote-812-2" id="pnote-812-2">2</a>] pas de troll ici et rien à voir, mais ne trouvez-vous pas que la page d'accueil du projet ressemble à Windows Mobile 7 ^^'</p>
<p>[<a href="https://silvyn.naudin.cc/?post/2011/06/02/Sauvegarde-en-ligne-automatique-de-fichiers-avec-Sparkleshare-sous-Fedora#rev-pnote-812-3" id="pnote-812-3">3</a>] oui, il en faut ou être un peu trop <del>git</del> geek pour lire ce genre de billet !</p></div>