Skip to main content

Sauvegarder toutes les bases de données

Pré-requis: Pour ne pas rencontrer de problème lors de la sauvegarde, assurez-vous au préalable d'avoir suivi la procédure suivante  "Augmenter la limite de fichiers ouvert dans MySQL / MariaDB"

En bonus: Pour automatiser les sauvegardes, référez-vous à la procédure suivante "Sauvegarde journalière automatique (Cron)"

Connexion et mise en place du fichier .sh


Se connecter en SSH à la vagrant

vagrant ssh
sudo su

Créer un fichier shell

nano backup.sh

Coller le contenu ci-dessous dans le fichier créé (Adapter les variables ci-besoin)


#!/bin/bash

# Basic variables
mysqluser="beaubox"
mysqlpass="beaubox"
defaultdir="wwwhost"
backupsdir="backups_db"

# Timestamp (sortable AND readable)
stamp=`date +"%s_%A_%d_%B_%Y_%Hh%M"`

# List all the databases
databases=`mysql -u $mysqluser -p$mysqlpass -e "SHOW DATABASES;" | tr -d "| " | grep -v "\(Database\|information_schema\|performance_schema\|mysql\|test\)"`
# Feedback
echo -e "Dumping to \e[1;32m$bucket/$stamp/\e[00m"
# Loop the databases
for db in $databases; do
  # Define our filenames
  echo " creating folder"
  dumpdir="/wwwhost/$backupsdir/$db"
  mkdir -p $dumpdir && cd $dumpdir
  # Feedback
  echo -e "\e[1;34m$db\e[00m"
  # Dump and zip
  echo -e "  creating \e[0;35m$tmpfile\e[00m"
  mysqldump -u $mysqluser -p$mysqlpass --force --opt --databases "$db" > "$stamp".sql 
done;

# Delete files older than 10 days
find /$defaultdir/$backupsdir/* -mtime +10 -exec rm {} \;

Enregistrer et quitter

ctrl x
Y

Ajouter les droits au fichier précédemment créé

chmod +x backup.sh

Exécution du script

 

./backup.sh