User Tools

Site Tools


subversion

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

subversion [2010/02/05 16:00]
ginko created
subversion [2010/02/05 16:03] (current)
ginko
Line 26: Line 26:
 ==== Via eclipse ==== ==== Via eclipse ====
 Utiliser subclipse ou [[subversive]]. Utiliser subclipse ou [[subversive]].
 +
 +====== Sauvegarder un dépôt ======
 +[[http://www.fbollon.net/node/77]]
 +
 +[[http://blog.pagesd.info/post/2008/12/18/Sauvegarde-d-un-depot-Subversion]]
 +
 +L'automatisation de la sauvegarde se fait grâce à un srcipt enregistré dans la crontab.
 +
 +  crontab -e
 +  0 18 * * 3-5 /home/msi/.bin/backup_projet.sh
 +
 +====== Script bash ======
 +
 +/home/msi/.bin/backup_projet.sh
 +<code bash>
 +#!/bin/bash
 +TIMESTAMP=`date +%Y-%m-%d`
 +#répertoire de sauvegarde pour Subversion
 +DUMPDIR=$HOME/tmp_backup_projet
 +#répertoire du repository Subversion
 +REPOSVN=/var/svn/morvan
 +#répertoire ftp
 +REMOTEDIR=/home/ftp/2009_2010/sauvegarde_projet/
 +
 +mkdir $DUMPDIR
 +cd $DUMPDIR
 +#echo $PWD
 +
 +#dump du repository svn
 +svnadmin hotcopy $REPOSVN $TIMESTAMP.dump
 +
 +if (( $? == 0 )); then
 + echo "$TIMESTAMP: svn hotcopy ope done" >>/home/msi/backup.log
 +else
 + echo "$TIMESTAMP: svn hotcopy ope FAILED" >>/home/msi/backup.log
 +fi
 +
 +#compression du dump
 +tar -zcvf $TIMESTAMP.dump.tar.gz $TIMESTAMP.dump >/dev/null
 +
 +if (( $? == 0 )); then
 + echo "$TIMESTAMP: tar ope done" >>/home/msi/backup.log
 +else
 + echo "$TIMESTAMP: tar ope FAILED" >>/home/msi/backup.log
 +fi
 +
 +chmod 666 $TIMESTAMP.dump.tar.gz
 +
 +#if (( $? == 0 )); then
 +# echo "tar ope done"
 +#fi
 +
 +#envoi sur le serveur distant
 +scp $TIMESTAMP.dump.tar.gz maitremsi@192.168.0.9:$REMOTEDIR
 +
 +if (( $? == 0 )); then
 + echo "$TIMESTAMP: scp transaction done" >>/home/msi/backup.log
 +else
 + echo "$TIMESTAMP: scp transaction FAILED" >>/home/msi/backup.log
 +fi
 +
 +#nettoyage
 +rm -rf $DUMPDIR/$TIMESTAMP.dump
 +find $DUMPDIR -mtime +30 -exec rm {} \;
 +
 +exit
 +</code>
 +===== Explications =====
 +  - On commence par faire une "hotcopy" du dépôt dans un fichier $TIMESTAMP.dump: <code bash>svnadmin hotcopy $REPOSVN $TIMESTAMP.dump</code>
 +  - On fait une archive $TIMESTAMP.dump.tar.gz <code bash>tar -zcvf $TIMESTAMP.dump.tar.gz $TIMESTAMP.dump >/dev/null</code>
 +  - On l'envoie sur le serveur via ssh (note: pour automatiser ce transfert, //cf//. plus bas) <code bash>scp $TIMESTAMP.dump.tar.gz maitremsi@192.168.0.9:$REMOTEDIR</code>
 +
 +
 +===== Difficultés avec SSH =====
 +SSH se veut sécurisé, il n'accepte donc pas de mot de passe en argument. On ne peut pas non plus lui passer en redirection (<<). En revanche, il est possible de feinter avec ssh-agent: [[http://doc.ubuntu-fr.org/ssh#utiliser_le_ssh-agent|le résumé cryptique de la feinte]].
 +
 +En gros:
 +  ssh-keygen -t dsa
 +  ssh-copy-id noob@ip-de-noob
 +(taper entrée à chaque fois, pas la peine de lire)
 +
 +PS: ne pas oublier d'installer openssh-server sur la machine distante et d'ouvir le port 22.
 +
 +
 +
subversion.txt · Last modified: 2010/02/05 16:03 by ginko