You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
Bash
80 lines
2.4 KiB
Bash
#!/bin/sh
|
|
#
|
|
# backup_sites_mysql.sh, Copyright © 2006-2011 Matteo Cypriani
|
|
#
|
|
# This program is free software. It comes without any warranty, to
|
|
# the extent permitted by applicable law. You can redistribute it
|
|
# and/or modify it under the terms of the Do What The Fuck You Want
|
|
# To Public License, Version 2, as published by Sam Hocevar. See
|
|
# http://sam.zoy.org/wtfpl/COPYING for more details.
|
|
|
|
###############################
|
|
##### 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"
|
|
# Niveau de compression à fournir à l'utilitaire de compression
|
|
# (y compris le tiret). Commenter pour utiliser la valeur par défaut :
|
|
#COMPRESS_LEVEL="-6"
|
|
# 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 --lock-tables -u "$USER" -p"$PASS" -B "$BASE" > "$FICH_DUMP"
|
|
$COMPRESS "$COMPRESS_LEVEL" "$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"
|