112 lines
2.7 KiB
Bash
112 lines
2.7 KiB
Bash
|
#!/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<69> 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<72>t <20> la moindre erreur non-catch<63>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<61> sur la date, ex: $SUFFIXE). A cela est ajout<75> .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<EFBFBD>re <20>galement un .tar.gz de l'arborescence compl<70>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 <20> se connecter <20> 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
|