1
0
Fork 0
scripts-admin-quickndirty-p.../sauvegarde_drupal.sh

112 lines
2.7 KiB
Bash
Executable file

#!/bin/sh
# Configuration
BASE_DIR="$HOME/backups"
BASE_NAME="" #initialise plus tard
PREFIXE="sauv_drupal_"
SUFFIXE=_$( date +%Y%m%d-%H%M )
DUREE_DE_VIE=3
BACKUP_BDD_ACTIF=1
BACKUP_FICHIERS_ACTIF=0
# On essaie de diminuer la priorité de la chose
# Aucune importance si les utilitaires ne sont pas dispos
renice 15 -p $$ >/dev/null 2>&1
ionice -c 3 -p $$ >/dev/null 2>&1
# Arrêt à la moindre erreur non-catchée
set -e
# Fonctions
# affiche le message d'aide
usage() {
cat <<EOF
$0 [-b base_dir] [ -B base_name] [-p prefixe] [-s suffixe] [-d duree_de_vie] repertoire_drupal
$0 -h
-b base_dir : répertoire de sauvegarde (defaut: $BASE_DIR)
-B base_name : nom de la sauvegarde. Par defaut, genere a partir du repertoire Drupal.
-p prefixe : prefixe des fichiers de sauvegarde (defaut: $PREFIXE)
-s suffixe : suffixe des fichiers de sauvegarde (default basé sur la date, ex: $SUFFIXE). A cela est ajouté .sql.gz et .tar.gz.
-d duree_de_vie : age en nb de jours a partir duquel les anciennes archives sont supprimees. Si 0, pas de suppression. (defaut: $DUREE_DE_VIE)
-t : génère également un .tar.gz de l'arborescence complète du Drupal
repertoire_drupal : répertoire de l'instance drupal.
EOF
}
# Début du code
# gestion des options de lancement
while getopts b:B:d:p:s:th o; do
case $o in
'b')
BASE_DIR="$OPTARG"
;;
'B')
BASE_NAME="$OPTARG"
;;
'p')
PREFIXE="$OPTARG"
;;
's')
SUFFIXE="$OPTARG"
;;
'd')
DUREE_DE_VIE="$OPTARG"
;;
't')
BACKUP_FICHIERS_ACTIF=1
;;
'h')
usage
exit 0
;;
\?)
usage >&2
exit 1
;;
esac
done
shift $( expr $OPTIND - 1 )
REPDRUPAL="$1"
if [ -z "$BASE_NAME" ]; then
BASE_NAME=$( printf "%s" $( basename "$REPDRUPAL" ) | tr -c "a-zA-Z" "-" )
fi
if [ ! -d "$REPDRUPAL" ]; then
echo "ERREUR: répertoire '$REPDRUPAL' inexistant." >&2
exit 1
fi
if [ ! -d "$BASE_DIR" ]; then
echo "ERREUR: repertoire de destination '$BASE_DIR' inexistant." >&2
exit 1
fi
cd "$REPDRUPAL"
if [ $( drush status 2>/dev/null | egrep -ci "Database[[:space:]]*:[[:space:]]*Connected" ) -ne 1 ]; then
echo "ERREUR : Drush n'arrive pas à se connecter à la BDD." >&2
exit 1
fi
if [ "$BACKUP_BDD_ACTIF" -gt 0 ]; then
# Backup SQL
drush sql-dump | gzip >"$BASE_DIR/$PREFIXE$BASE_NAME$SUFFIXE.sql.gz"
fi
if [ "$BACKUP_FICHIERS_ACTIF" -gt 0 ]; then
# Backup fichiers
tar -czf "$BASE_DIR/$PREFIXE$BASE_NAME$SUFFIXE.tar.gz" ./
fi
# Suppression des vieux backups
if [ "$DUREE_DE_VIE" -ne "0" ]; then
test "$BACKUP_BDD_ACTIF" -gt 0 && find $BASE_DIR -name "$PREFIXE$BASE_NAME*.sql.gz*" -mtime "+$DUREE_DE_VIE" -delete
test "$BACKUP_FICHIERS_ACTIF" -gt 0 && find $BASE_DIR -name "$PREFIXE$BASE_NAME*.tar.gz*" -mtime "+$DUREE_DE_VIE" -delete
fi