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

Mots clés shell

Si cet article vous a plu, suivez-moi sur Twitter Suivez-moi sur Twitter

  1. Avatar

    Par 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. Avatar

    Par É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. Avatar

    Par 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. Avatar

    Par kinkey le 27 juillet 2009 à 12h49 :


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

  5. Avatar

    Par 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

Merci de vous exprimer dans un français correct. Les commentaires déplacés, injurieux et le spam seront supprimés.

Les trackbacks sont fermés pour cause de spam.


Abonnez-vous au flux RSS et suivez les nouveaux articles du site Suivez-moi sur Twitter