Table of Contents
Accès au serveur:
svn://192.168.0.3/morvan
NB:
port: 3690
Utilisation
Rappel: lorsqu'on utilise svn:
Checkout
Première commande pour créer une copie locale
Update
Met à jour la copie locale
Commit
Envoie les modifications sur le dépôt principal. Les bons commentaires font les bons développements!
Pour plus d'info: Initation à subversion
Clients
En ligne de commande
Utiliser svn en ligne de commande: doc.ubuntu-fr.org.
En graphique
Sous linux
Installer rapidsvn.
Sous windows
Chercher tortoise svn.
Via eclipse
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
#!/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
Explications
- On commence par faire une “hotcopy” du dépôt dans un fichier $TIMESTAMP.dump:
svnadmin hotcopy $REPOSVN $TIMESTAMP.dump
- On fait une archive $TIMESTAMP.dump.tar.gz
tar -zcvf $TIMESTAMP.dump.tar.gz $TIMESTAMP.dump >/dev/null
- On l'envoie sur le serveur via ssh (note: pour automatiser ce transfert, cf. plus bas)
scp $TIMESTAMP.dump.tar.gz maitremsi@192.168.0.9:$REMOTEDIR
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: 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.