You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.4 KiB
79 lines
2.4 KiB
#!/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"
|
|
|