111 lines
2.7 KiB
Bash
Executable file
111 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
|