Note
Pensez a fixer les deux paramètres pathRepo et pathBackup. Merci de me laisser un commentaire si vous en sentez le besoin.
-
#!/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=“/chemin/repository”;
-
# Chemin du dossier de sauvegarde
-
pathBackup=“/chemin/dossier/sauvegarde”;
-
# Chemin du dossier pour mémoriser la dernière version sauvegardée
-
pathNumVersion=$pathBackup“/version”;
-
# Chemin du fichier de logs
-
pathLog=$pathBackup“/backup.log”;
-
# Nom du fichier (compris entre la date et l’extension)
-
fileName=“backup_svn”;
-
# Format de la date
-
# Pour le nom du fichier
-
dateFileFormat=“+%Y%m%d”;
-
# Pour le log
-
dateLogFormat=“+%Y-%m-%d %H:%M”;
-
# Vérifications
-
# Vérification de l’existence des dossiers de travail
-
if [ ! -d $pathBackup ]; then
-
echo “Dossier $pathBackup inexistant”;
-
exit 1;
-
fi
-
echo “[$(date “$dateLogFormat“)] Début de la sauvegarde” >> $pathLog;
-
# Création du dossier de la version si il n’existe pas
-
if [ ! -d $pathNumVersion ]; then
-
mkdir $pathNumVersion;
-
fi
-
numVersionLastBackup=$(ls $pathNumVersion);
-
if [ “$numVersionLastBackup” = “” ]; then
-
touch “$pathNumVersion/1”;
-
numVersionLastBackup=1;
-
fi
-
if [ $numVersionLastBackup -gt 1 ]; then
-
backupIncremental=” –incremental”;
-
typeBackup=“incr”;
-
else
-
typeBackup=“full”;
-
fi
-
# Vérification de l’existance du dépôt
-
if ! (svnlook info $pathRepo 2>>$pathLog 1>“/dev/null”) ; then
-
echo “[$(date “$dateLogFormat“)] ERREUR : Repository $pathRepo inexistant” >> $pathLog;
-
echo “[$(date “$dateLogFormat“)] Fin de l’exécution – Sauvegarde non effectuée” >> $pathLog;
-
exit 1;
-
fi
-
# Récupération de la dernière version présente dans le dépôt
-
youngestSvnVersion=$(svnlook youngest $pathRepo);
-
echo “[$(date “$dateLogFormat“)] Version la plus récente : $youngestSvnVersion” >> $pathLog;
-
if [ $numVersionLastBackup -gt $youngestSvnVersion ]; then
-
echo “[$(date “$dateLogFormat“)] La version la plus récente est la version sauvegardée, la sauvegarde n’est donc pas nécéssaire” >> $pathLog;
-
echo “[$(date “$dateLogFormat“)] Fin de la sauvegarde” >> $pathLog;
-
exit 0
-
fi
-
# Lancement effectif de la sauvegarde
-
if (svnadmin dump -r$numVersionLastBackup:$youngestSvnVersion$backupIncremental $pathRepo 2>>$pathLog | bzip2 > “$pathBackup/$(date “$dateFileFormat“)_”$fileName“_”$typeBackup“_”$numVersionLastBackup“_to_”$youngestSvnVersion“.svndump.bz2”) ; then
-
echo “[$(date “$dateLogFormat“)] Mise à jour du numéro de version” >> $pathLog;
-
mv $pathNumVersion/$numVersionLastBackup $pathNumVersion/$(($youngestSvnVersion + 1));
-
else
-
echo “[$(date “$dateLogFormat“)] Erreur lors de la sauvegarde” >> $pathLog;
-
echo “[$(date “$dateLogFormat“)] Fin de l’exécution – Sauvegarde non effectuée” >> $pathLog;
-
exit 1;
-
fi
-
echo “[$(date “$dateLogFormat“)] Fin de la sauvegarde” >> $pathLog;
-
exit 0