Sauvegarde automatique Trac et Subversion

Tagged:  •    •    •  

Dans des précédents billet nous avons vu comment créer un projet Subversion et comment installer Trac. Cette fois je vais vous expliquer comment je sauvegarde toutes ces précieuses données automatiquement.

  • Création d'un script shell à adapter selon vos besoins
  • #!/bin/bash
    TIMESTAMP=`date +%Y-%m-%d`
    #répertoire de sauvegarde pour Subversion
    DUMPDIR=$HOME/backup_dir/dump_svn
    #répertoire de sauvegarde pour Trac
    HOTCOPYDIR=$HOME/backup_dir/trac_backup
    #répertoire du repository Subversion
    REPOSVN=$HOME/svndir
    #répertoire des projets Trac
    TRACPROJDIR=$HOME/trac_dir
    #adresse email pour l'envoi des sauvegardes
    MAIL=unmail@gmail.com
    # les variables d'environnements ne sont pas disponibles
    # dans les cronjobs chez Dreamhost, on spécifie celles dont on aura besoin pour trac
    export PYTHONPATH=/home/user/packages/lib/python2.3/site-packages
    export LD_LIBRARY_PATH=/home/user/packages/lib
    export PATH=/home/user/packages/bin:$PATH

    #dump du repository svn
    svnadmin dump $REPOSVN/projet1 > $DUMPDIR/$TIMESTAMP.projet1.dump
    svnadmin dump $REPOSVN/projet2 > $DUMPDIR/$TIMESTAMP.projet2.dump

    #hotcopy des projets trac
    trac-admin $TRACPROJDIR/projet1 hotcopy $HOTCOPYDIR/$TIMESTAMP.projet1
    trac-admin $TRACPROJDIR/projet2 hotcopy $HOTCOPYDIR/$TIMESTAMP.projet2

    #compression du dump
    tar cjf $DUMPDIR/$TIMESTAMP.projet1.dump.tar.bz2 $DUMPDIR/$TIMESTAMP.projet1.dump
    tar cjf $DUMPDIR/$TIMESTAMP.projet2.dump.tar.bz2 $DUMPDIR/$TIMESTAMP.projet2.dump

    #compression des hotcopy trac
    tar cjf $HOTCOPYDIR/$TIMESTAMP.projet1.tar.bz2 $HOTCOPYDIR/$TIMESTAMP.projet1
    tar cjf $HOTCOPYDIR/$TIMESTAMP.projet2.tar.bz2 $HOTCOPYDIR/$TIMESTAMP.projet2

    #nettoyage
    rm -rf $DUMPDIR/$TIMESTAMP.*.dump
    rm -rf $HOTCOPYDIR/$TIMESTAMP.projet1
    rm -rf $HOTCOPYDIR/$TIMESTAMP.projet2
    find $DUMPDIR -mtime +30 -exec rm {} \;
    find $HOTCOPYDIR -mtime +30 -exec rm {} \;

    #envoi des fichiers par mail
    mutt -s "dump svn" \\
    -a $DUMPDIR/$TIMESTAMP.projet1.dump.tar.bz2 \\
    -a $DUMPDIR/$TIMESTAMP.projet2.dump.tar.bz2 \\
    $MAIL < /dev/null

    mutt -s "hotcopy trac" \\
    -a $HOTCOPYDIR/$TIMESTAMP.projet1.tar.bz2 \\
    -a $HOTCOPYDIR/$TIMESTAMP.projet2.tar.bz2 \\
    $MAIL < /dev/null

  • Uploader le fichier sur votre serveur
  • Donner les droits d'exécution au fichier
  • chmod +x nomdufichier
  • Ajouter le script à un job cron afin d'automatiser son exécution à intervalles réguliers
  • Chez l'hébergeur Dreamhost on peux désormais faire ça facilement via le panel d'administration dans le menu "Goodies/Cron jobs".
    Cron job

Voilà c'est fini, vous pouvez de temps en temps faire le ménage dans les répertoires de sauvegarde sur le serveur.
Bon je ne suis pas fort en Shell on doit pouvoir faire beaucoup mieux, mais ça marche aussi comme ça ;)

Sauvegarde Dreamhost

Salut,

j'ai un peut de mal à saisir le système de sauvegarde de Dreamhost.

Est-ce qu'il y a déjà une sauvegarde du contenu des domaines et des bases MySql d'implémenté ?

Et est-ce qu'une sauvegarde automatique peut uniquement est réalisée en Shell en utilisant les Cron Jobs ?