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