<?xml version="1.0" encoding="UTF-8" ?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Posteet: backup,linux</title> 
    <link>http://www.posteet.com/</link> 
    <description>Recent posteets posted to Posteet</description>
    <ttl>60</ttl>

    
    <item>
        <title>Sauvegarde d'un dépôt SVN</title>
        <link>http://www.posteet.com/view/672</link>
        <description>
        <![CDATA[<pre>#!/bin/bash
# Script de sauvegarde incrémentale d'un dépôt subversion
# Il est possible de provoquer une sauvegarde complète en supprimant le dossier version ou son contenu
# Paramètres
# Chemin du dépôt à sauvegarder
pathRepo=&quot;/chemin/repository&quot;;
# Chemin du dossier de sauvegarde
pathBackup=&quot;/chemin/dossier/sauvegarde&quot;;
# Chemin du dossier pour mémoriser la dernière version sauvegardée
pathNumVersion=$pathBackup&quot;/version&quot;;
# Chemin du fichier de logs
pathLog=$pathBackup&quot;/backup.log&quot;;
# Nom du fichier (compris entre la date et l'extension)
fileName=&quot;backup_svn&quot;;
# Format de la date
# Pour le nom du fichier
dateFileFormat=&quot;+%Y%m%d&quot;;
# Pour le log
dateLogFormat=&quot;+%Y-%m-%d %H:%M&quot;;

# Vérifications
# Vérification de l'existence des dossiers de travail
if [ ! -d $pathBackup ]; then
	echo &quot;Dossier $pathBackup inexistant&quot;;
	exit 1;
fi

echo &quot;[$(date &quot;$dateLogFormat&quot;)] Début de la sauvegarde&quot; &gt;&gt; $pathLog;

# Création du dossier de la version si il n'existe pas
if [ ! -d $pathNumVersion ]; then
	mkdir $pathNumVersion;
fi

numVersionLastBackup=$(ls $pathNumVersion);
if [ &quot;$numVersionLastBackup&quot; = &quot;&quot; ]; then
	touch &quot;$pathNumVersion/1&quot;;
	numVersionLastBackup=1;
fi

if [ $numVersionLastBackup -gt 1 ]; then
	backupIncremental=&quot; --incremental&quot;;
	typeBackup=&quot;incr&quot;;
else
	typeBackup=&quot;full&quot;;
fi

# Vérification de l'existance du dépôt
if  ! (svnlook info $pathRepo 2&gt;&gt;$pathLog 1&gt;&quot;/dev/null&quot;) ; then
	echo &quot;[$(date &quot;$dateLogFormat&quot;)] ERREUR : Repository $pathRepo inexistant&quot; &gt;&gt; $pathLog;
	echo &quot;[$(date &quot;$dateLogFormat&quot;)] Fin de l'exécution - Sauvegarde non effectuée&quot; &gt;&gt; $pathLog;
	exit 1;
fi

# Récupération de la dernière version présente dans le dépôt
youngestSvnVersion=$(svnlook youngest $pathRepo);
echo &quot;[$(date &quot;$dateLogFormat&quot;)] Version la plus récente : $youngestSvnVersion&quot; &gt;&gt; $pathLog;

if [ $numVersionLastBackup -gt $youngestSvnVersion ]; then
	echo &quot;[$(date &quot;$dateLogFormat&quot;)] La version la plus récente est la version sauvegardée, la sauvegarde n'est donc pas nécéssaire&quot; &gt;&gt; $pathLog;
	echo &quot;[$(date &quot;$dateLogFormat&quot;)] Fin de la sauvegarde&quot; &gt;&gt; $pathLog;
	exit 0
fi

# Lancement effectif de la sauvegarde
if (svnadmin dump -r$numVersionLastBackup:$youngestSvnVersion$backupIncremental $pathRepo 2&gt;&gt;$pathLog | bzip2 &gt; &quot;$pathBackup/$(date &quot;$dateFileFormat&quot;)_&quot;$fileName&quot;_&quot;$typeBackup&quot;_&quot;$numVersionLastBackup&quot;_to_&quot;$youngestSvnVersion&quot;.svndump.bz2&quot;) ; then
	echo &quot;[$(date &quot;$dateLogFormat&quot;)] Mise à jour du numéro de version&quot; &gt;&gt; $pathLog;
	mv $pathNumVersion/$numVersionLastBackup $pathNumVersion/$(($youngestSvnVersion + 1));
else
	echo &quot;[$(date &quot;$dateLogFormat&quot;)] Erreur lors de la sauvegarde&quot; &gt;&gt; $pathLog;
	echo &quot;[$(date &quot;$dateLogFormat&quot;)] Fin de l'exécution - Sauvegarde non effectuée&quot; &gt;&gt; $pathLog;
	exit 1;
fi

echo &quot;[$(date &quot;$dateLogFormat&quot;)] Fin de la sauvegarde&quot; &gt;&gt; $pathLog;
exit 0</pre> <a href="http://www.posteet.com/tags/backup">[backup]</a>  <a href="http://www.posteet.com/tags/bash">[bash]</a>  <a href="http://www.posteet.com/tags/linux">[linux]</a>  <a href="http://www.posteet.com/tags/svn">[svn]</a> ]]>        </description>
        <dc:creator>gameplayer</dc:creator>
        <pubDate>Tue, 15 Jan 2008 07:34:51 +0000</pubDate>

            <category>backup</category>
            <category>bash</category>
            <category>linux</category>
            <category>svn</category>
    
    </item>


</channel>
</rss>
