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