Un script de backup pour votre serveur

J’ai enfin mis en place sur mon serveur un script de sauvegarde correct. Il exporte les bases de données dans des fichiers séparés et datés, avant de les envoyer sur rsync.net, un service de sauvegardes externalisé utilisant rsync, scp ou sftp au choix. C’est cette première solution que j’ai choisie.

#!/bin/sh

IFS='

'

DBHOST="" # Votre serveur de base de données
DBUSER="" # Votre utilisateur de base de données
DBPASS="" # Votre mot de passe de base de données
BACKUPDB="" # Le chemin vers votre répertoire de backup sans le / final
DBDATE=`date "+%Y%m%d"`
DBTODUMP=$(mysql -u$DBUSER -h$DBHOST -p$DBPASS -Bse 'SHOW DATABASES')

RSHOST="" # Hôte de votre service rsync
RSPATH="" # Liste des répertoires à sauvegarder, sans le / final, séparés par un espace
RSEXCLUDE="" # Chemin vers le fichier d'exclusion rsync

# Sauvegarde des bases de données
for db in $DBTODUMP
do
  mysqldump -u$DBUSER -p$DBPASS -q -e --single-transaction --add-drop-database --add-drop-table -B $db > ${BACKUPDB}/${db}_${DBDATE}.sql
  bzip2 ${BACKUPDB}/${db}_${DBDATE}.sql
done

# Sauvegarde de système de fichiers
rsync -avz --delete --progress --exclude-from=${RSEXCLUDE} ${RSPATH} ${BACKUPDB} ${RSHOST}:

# Suppression des fichiers de sauvegarde
rm ${BACKUPDB}/*.bz2

Et voilà, il ne vous reste plus qu’à insérer ce script dans votre crontab pour le faire tourner quotidiennement, et le tour est joué.

Publié le 21 juillet 2009 à 09h44 Publié sous et Labels shell

À propos

Frédéric de Villamil

Je m'appelle Frédéric de Villamil, et quand je ne déploie pas ma mauvaise humeur et ma mauvaise foi sur le Web, je suis un super héros chargé de sauver le monde. Vous pouvez me suivre sur Twitter.

  1. Oncle Tom le 21 juillet 2009 à 10h13

    Perso j’utilise backup-manager. Il travaille très bien comme un grand et sait sauvegarder de manière incrémentable et sur n’importe quoi (disque, FTP, SCP etc.)

  2. Édouard le 21 juillet 2009 à 10h57

    Pour ma part, j’utilise astrails-safe: http://github.com/astrails/safe/tree/master

    Safe supporte Mysql, Postgresql, les backups de manière incrémentable ou non, et surtout c’est un vrai plaisir à configurer (en ruby).

    J’envoie le tout crypté sur Amazon S3, et il me semble que c’est un peu moins cher que rsync.net. http://aws.amazon.com/s3/#pricing

  3. Guillaume le 21 juillet 2009 à 23h54

    L’option -C (ou –compress) pour le mysqldump peut notoirement accélérer les choses si ta base est grassouillette et distante.

  4. kinkey le 27 juillet 2009 à 12h49

    Perso j’utilise backupeur http://codingteam.net/project/backupeur

  5. Off Topic le 21 septembre 2009 à 10h08

    Dors tranquille ;)

    L’idée est séduisante (celle qui consiste à penser qu’on résistera au crash) mais votre script ne teste aucun des retours des programmes utilisés. Si bien que, lorsque celui-ci plantera (aussi sûrement que le serveur crashera), vous ne le saurez pas.

    Vous pouvez insérer des

    if [ $? -ne 0 ] ; then echo “[ date ] something went wrong” | mail -s “subject” toto@toto.com fi

    si vous souhaitez, après chaque appel, être ou bien certain que cela s’est bien passé, ou bien être (presque) certain d’être prévenu dans le cas contraire. Le presque parce que le mail doit fonctionner (ie. pas d’autres erreurs).

Réagir à Un script de backup pour votre serveur

Afin de maintenir le niveau global de ce site, les commentaires font l'objet d'une politique de modération qualitative basée sur des critères non écrits et totalement subjectifs, donc injustes.

Les commentaires écrits en langage SMS, inutiles, déplacés, injurieux ou relevant du spam seront systématiquement supprimés sans avertissement préalable.

Les trackbacks sont fermés pour cause de spam.