Skip to content

Sauvegarde d’un dépôt SVN

  • by

Note

Pensez a fixer les deux paramètres pathRepo et pathBackup. Merci de me laisser un commentaire si vous en sentez le besoin.

  1. #!/bin/bash
  2. # Script de sauvegarde incrémentale d’un dépôt subversion
  3. # Il est possible de provoquer une sauvegarde complète en supprimant le dossier version ou son contenu
  4. # Paramètres
  5. # Chemin du dépôt à sauvegarder
  6. pathRepo=“/chemin/repository”;
  7. # Chemin du dossier de sauvegarde
  8. pathBackup=“/chemin/dossier/sauvegarde”;
  9. # Chemin du dossier pour mémoriser la dernière version sauvegardée
  10. pathNumVersion=$pathBackup“/version”;
  11. # Chemin du fichier de logs
  12. pathLog=$pathBackup“/backup.log”;
  13. # Nom du fichier (compris entre la date et l’extension)
  14. fileName=“backup_svn”;
  15. # Format de la date
  16. # Pour le nom du fichier
  17. dateFileFormat=“+%Y%m%d”;
  18. # Pour le log
  19. dateLogFormat=“+%Y-%m-%d %H:%M”;
  20. # Vérifications
  21. # Vérification de l’existence des dossiers de travail
  22. if [ ! -d $pathBackup ]; then
  23.         echo “Dossier $pathBackup inexistant”;
  24.         exit 1;
  25. fi
  26. echo “[$(date “$dateLogFormat“)] Début de la sauvegarde” >> $pathLog;
  27. # Création du dossier de la version si il n’existe pas
  28. if [ ! -d $pathNumVersion ]; then
  29.         mkdir $pathNumVersion;
  30. fi
  31. numVersionLastBackup=$(ls $pathNumVersion);
  32. if [ “$numVersionLastBackup” = “” ]; then
  33.         touch “$pathNumVersion/1”;
  34.         numVersionLastBackup=1;
  35. fi
  36. if [ $numVersionLastBackup -gt 1 ]; then
  37.         backupIncremental=” –incremental”;
  38.         typeBackup=“incr”;
  39. else
  40.         typeBackup=“full”;
  41. fi
  42. # Vérification de l’existance du dépôt
  43. if  ! (svnlook info $pathRepo 2>>$pathLog 1>“/dev/null”) ; then
  44.         echo “[$(date “$dateLogFormat“)] ERREUR : Repository $pathRepo inexistant” >> $pathLog;
  45.         echo “[$(date “$dateLogFormat“)] Fin de l’exécution – Sauvegarde non effectuée” >> $pathLog;
  46.         exit 1;
  47. fi
  48. # Récupération de la dernière version présente dans le dépôt
  49. youngestSvnVersion=$(svnlook youngest $pathRepo);
  50. echo “[$(date “$dateLogFormat“)] Version la plus récente : $youngestSvnVersion” >> $pathLog;
  51. if [ $numVersionLastBackup -gt $youngestSvnVersion ]; then
  52.         echo “[$(date “$dateLogFormat“)] La version la plus récente est la version sauvegardée, la sauvegarde n’est donc pas nécéssaire” >> $pathLog;
  53.         echo “[$(date “$dateLogFormat“)] Fin de la sauvegarde” >> $pathLog;
  54.         exit 0
  55. fi
  56. # Lancement effectif de la sauvegarde
  57. if (svnadmin dump -r$numVersionLastBackup:$youngestSvnVersion$backupIncremental $pathRepo 2>>$pathLog | bzip2 > “$pathBackup/$(date “$dateFileFormat“)_”$fileName“_”$typeBackup“_”$numVersionLastBackup“_to_”$youngestSvnVersion“.svndump.bz2”) ; then
  58.         echo “[$(date “$dateLogFormat“)] Mise à jour du numéro de version” >> $pathLog;
  59.         mv $pathNumVersion/$numVersionLastBackup $pathNumVersion/$(($youngestSvnVersion + 1));
  60. else
  61.         echo “[$(date “$dateLogFormat“)] Erreur lors de la sauvegarde” >> $pathLog;
  62.         echo “[$(date “$dateLogFormat“)] Fin de l’exécution – Sauvegarde non effectuée” >> $pathLog;
  63.         exit 1;
  64. fi
  65. echo “[$(date “$dateLogFormat“)] Fin de la sauvegarde” >> $pathLog;
  66. exit 0