diff --git a/backup_sites_mysql/README b/backup_sites_mysql/README new file mode 100644 index 0000000..14c7c02 --- /dev/null +++ b/backup_sites_mysql/README @@ -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. diff --git a/backup_sites_mysql/backup_sites_mysql.sh b/backup_sites_mysql/backup_sites_mysql.sh new file mode 100755 index 0000000..7c09fac --- /dev/null +++ b/backup_sites_mysql/backup_sites_mysql.sh @@ -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"