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

  1. On commence par faire une “hotcopy” du dépôt dans un fichier $TIMESTAMP.dump:
    svnadmin hotcopy $REPOSVN $TIMESTAMP.dump
  2. On fait une archive $TIMESTAMP.dump.tar.gz
    tar -zcvf $TIMESTAMP.dump.tar.gz $TIMESTAMP.dump >/dev/null
  3. 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.