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}/*.bz2Et 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 Systèmes et réseaux
Mots clés shell
Si cet article vous a plu, suivez-moi sur Twitter
5 commentaires sur Un script de backup pour votre serveur »
-
Par Oncle Tom le 21 juillet 2009 à 10h13 :
-
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
-
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.
-
Par kinkey le 27 juillet 2009 à 12h49 :
Perso j’utilise backupeur http://codingteam.net/project/backupeur
-
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 fisi 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).
Trackbacks sur Un script de backup pour votre serveur
Les trackbacks sont fermés pour cause de spam.
L'ergonomie web, l'utilisabilité et la qualité des logiciels sont trois grandes passions mises au services de ma profession.
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.)