Script Bash, sauvegarder son site web

Les vacances c’est l’occasion de mettre des tee shirt de geek, d’oublier volontairement de se brosser les dents ou encore de boire l’apero à 17h00, mais c’est aussi la linuxerie!

Je vous propose un petit script pour sauvegarder toutes vos bases de données mysql ainsi que les fichiers liés à vos sites. Il vous faudra avoir installer rsync et avoir modifier ce qui est en gras, soit les répertoires, l’utilisateur et le mot de passe mysql.

#! /bin/bash
# Script de sauvegarde journaliere MYSQL et fichiers web, sur disque local
# Author : Jocker
# https://lepouf.info
# licence : GNU GPL

# Configurations general 
TIMESTAMP=$(date +"%F")

# Configurations mysql
BACKUP_DB_DIR="<strong>../Server/DB</strong>"
BACKUP_DB_TMP_DIR="<strong>../Server/DB/$TIMESTAMP-DB</strong>"
MYSQL_USER="<strong>UTILISATEUR</strong>"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="<strong>MOT-DE-PASSE</strong>"
MYSQLDUMP=/usr/bin/mysqldump

# Configurations copies fichiers
SOURCE_DATA_DIR="<strong>/var/www/</strong>"
BACKUP_DATA_DIR="<strong>../Server/DATA/var/www</strong>"

####################################################################
########################## MYSQL ###################################
####################################################################

# Creation repertoire 
mkdir -p "$BACKUP_DB_TMP_DIR"

# Collecte db
databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
# Sauvegarde db
for db in $databases; do
  $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DB_TMP_DIR/$db.gz"
done

# Creation d'un fichier tar.gz
tar -zcvf "$BACKUP_DB_TMP_DIR".tar.gz "$BACKUP_DB_TMP_DIR/"
# Suppression repertoire
rm -R "$BACKUP_DB_TMP_DIR/"
# Suppression des archives de plus de 10 jours
find "$BACKUP_DB_DIR/" -type f -mtime +10 -exec /bin/rm -f {} \;


####################################################################
########################## DATA ####################################
####################################################################

rsync -avz --delete-after "$SOURCE_DATA_DIR" "$BACKUP_DATA_DIR"

Maintenant vous pouvez editer votre crontab pour lancer le script périodiquement.

# nano -w /etc/crontab

Exemple ci-dessous une fois par jour à une heure du matin. En gras ce que vous devez adapter.

00    1    *   *   *   <strong>USER</strong> /bin/sh <strong>../web-autosave.sh</strong>

2 Commentaires

  1. Manu Pierre Tchernia of the space
    198 messages

    Comment ça, on se brosse pas les dents ? Nan mais oh !!!

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera jamais publiée, ou utilisée à des fins commerciales. Les champs obligatoires sont indiqués avec des *.

Vous pouvez utiliser les balises de mise en forme