Add backup_sites_mysql.sh and its README

This commit is contained in:
Matteo Cypriani 2010-01-04 02:10:09 +01:00
parent 1bcd00d005
commit 6165b0e428
2 changed files with 73 additions and 0 deletions

View File

@ -0,0 +1,5 @@
The script backup_sites_mysql.sh is designed to save websites data files
and the associated MySQL databases.
You need to edit the script to configure the databases you want to backup
and the directory containing all your websites.

View File

@ -0,0 +1,68 @@
#!/bin/sh
#
###############################
##### Options utilisateur #####
# Bases de données à sauvegarder :
BASES="information_schema mysql NAME_DB1 NAME_DB2 ..."
# Utilisateur et mot de passe MySQL à utiliser :
USER="backup_user"
PASS="backup_password"
# Répertoires à sauvegarder :
#REPS="/opt/svn /opt/www"
REPS="/srv/www"
# Répertoire de destination des sauvegardes :
REP_TMP_SAUV="/tmp/sauv"
# Répertoire où l'on déplace les sauvegardes après exécution :
REP_MV_SAUV="/home/sauv"
# Utilitaire de compression, qui doit avoir une interface à la gzip
# (gzip, bzip2, xz…) :
COMPRESS="xz"
# Extension des fichiers compressés (gz, bz2, xz…) :
ZEXT="xz"
#################################
##### Suite des préparatifs #####
umask 077
DATE=`date +'%Y-%m-%d'` # date au format année-mois-jour
REP_SAUV="$REP_TMP_SAUV"/$DATE
# Création du répertoire de destination et du répertoire final
mkdir -p "$REP_SAUV" || exit 2
mkdir -p "$REP_MV_SAUV" || exit 2
# Sauvegarde des bases de données
for BASE in $BASES ; do
FICH_DUMP="$REP_SAUV"/${BASE}_$DATE.dump
mysqldump -u $USER -p"$PASS" -B $BASE > "$FICH_DUMP"
$COMPRESS -9 "$FICH_DUMP" # On compresse après avoir terminé le dump afin que la BDD ne soit pas verrouillée trop longtemps.
done
# Sauvegarde des répertoires
for REP in $REPS ; do
if [ -e $REP ] ; then
ARCH="$REP_SAUV"/`basename "$REP"`_$DATE
tar cf - $REP | $COMPRESS -9 > "$ARCH".tar.$ZEXT
else
echo "Erreur ! Le fichier « $REP » n'existe pas." >&2
fi
done
# Déplacement de la sauvegarde
mv "$REP_SAUV" "$REP_MV_SAUV" || echo "Erreur lors du déplacement de la sauvegarde de « $REP_SAUV » vers « $REP_MV_SAUV »." >&2
# Suppression du répertoire temporaire
rmdir "$REP_TMP_SAUV" 2>/dev/null
# Message final
REP_MV_SAUV="$REP_MV_SAUV"/$DATE
echo "Sauvegarde terminée. Contenu du répertoire « $REP_MV_SAUV » :"
\ls -lh "$REP_MV_SAUV"