User Tools

This is an old revision of the document!


#!/bin/bash

# on verifie que l'utilisateur du script soit bien "root"
# sinon arret du script
if [[ $EUID -ne 0 ]]; then
  echo "Vous devez être root." 1>&2
   exit 1;
fi

# on récupère la date et l'heure actuelles
# sous plusieurs formats utilisables plus tard
BACKUP_DAY=$(date +'%F')
NOW="$(date)"
DATE=$(date +'%F_%H%M%S')

# on definit ensuite les dossiers qui vont etre utilisés

# dossier à sauvegarder
DIR_TO_BACKUP="/var/www/www.mywebsite.com/htdocs"
# dossier qui contient toutes les sauvegardes
BACKUP_ROOT_DIR="/var/www/www.mywebsite.com/backups/roulement"
# dossier de destination de la sauvegarde avec la date du jour
BACKUP_DIR="${BACKUP_ROOT_DIR}/${BACKUP_DAY}"
# fichier de log (pour garder une trace de l'etat des sauvegardes)
LOG_FILE="/var/www/www.mywebsite.com/log/backup.log"

# on vérifie si le dossier à sauvegarder existe bien
# sinon arret du script
[ ! -d ${DIR_TO_BACKUP} ] && exit 1

# on vérifie si le dossier de sauvegarde existe bien
# sinon on le crée
[ ! -d ${BACKUP_DIR} ] && mkdir -p ${BACKUP_DIR}

# on vérifie si le fichier de logs existe déjà
# sinon on le crée
[ ! -f ${LOG_FILE} ] && touch ${LOG_FILE}

# on construit maintenant le nom du fichier de sauvegarde avec la date et l'heure
TAR_FILE="${BACKUP_DIR}/mywebsite-${DATE}.tgz"

# c'est parti pour la sauvegarde

# on ecrit l'info dans le fichier de log
echo "==================================
[${NOW}] > Début" | tee -a ${LOG_FILE}

# on se déplace vers le dossier à sauvegarder
cd ${DIR_TO_BACKUP}
# on compresse le dossier
tar czf ${TAR_FILE} .
# on revient dans le dossier dans lequel on était
# mais sans affichier le résultat
cd - > /dev/null

# on ecrit l'info dans le fichier de log
# le nom du fichier compressé et sa taille
echo "[$(date)] > TAR file: ${TAR_FILE} : $(du -sh ${TAR_FILE}) " | tee -a ${LOG_FILE}

# si on a plus de deux sauvegardes on supprime la plus ancienne
for i in $(ls -1t ${BACKUP_ROOT_DIR} | tail -n +3); do
  rm -vrf ${BACKUP_ROOT_DIR}/${i}
  # on écrit l'info dans le fichier de log
  echo "[$(date)] > Suppression de: ${i}" | tee -a ${LOG_FILE}
done

# on envoie la dernière sauvegarde vers le serveur ftp

# mais avant on définit les variables de connexion
# le login et le pass sont définis dans le fichier /root/.netrc
HOST="dedibackup-dc3.online.net"
LOGIN="auto"
PASSWORD="auto"
EXCLUDED="*.*~"

# commande ftp
lftp -c "set ftp:list-options -a;
open ${HOST};
lcd ${BACKUP_DIR};
cd backups;
mirror --reverse \
--delete-first \
--verbose \
--exclude-glob $EXCLUDED";

# on écrit l'heure de fin dans le fichier de log
echo "[$(date)] > Fin" | tee -a ${LOG_FILE}

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information