#!/bin/sh
# Parametrage des fichiers
BACKUP_DIRECTORY=/home/backups
TEMP_DIRECTORY=$BACKUP_DIRECTORY/$(date +%Y-%m-%d)
SQLDUMPS_DIRECTORY=$TEMP_DIRECTORY/__SQL_DUMPS__
LOG_FILE=$TEMP_DIRECTORY.log
LOCAL_DIRECTORY=/var/www
LOCAL_SQL_USER=username
LOCAL_SQL_PASSWORD=password
# Acces au serveur distant
REMOTE_IP=192.168.0.1
REMOTE_SSH_USER=username
REMOTE_SSH_PASSWORD=password
REMOTE_DIRECTORY=/var/www
REMOTE_SQL_USER=username
REMOTE_SQL_PASSWORD=password
# Copie des fichiers locaux
echo "[$(date +%d/%m/%Y-%H:%M)] Sauvegarde des fichiers locaux" >> $LOG_FILE
cp -R $LOCAL_DIRECTORY $TEMP_DIRECTORY >> $LOG_FILE
# Mise a jour des fichiers locaux
echo "[$(date +%d/%m/%Y-%H:%M)] Mise a jour des fichiers" >> $LOG_FILE
lftp sftp://$REMOTE_SSH_USER:$BPASSWORD@$REMOTE_IP -e "mirror -e $REMOTE_DIRECTORY $LOCAL_DIRECTORY ; quit" >> $LOG_FILE
# Copie des bases de donnees locales et mise a jour
echo "[$(date +%d/%m/%Y-%H:%M)] Sauvegarde et mise a jour des bases de donnees locales" >> $LOG_FILE
mkdir $SQLDUMPS_DIRECTORY/
DBS="$(mysql --user=$LOCAL_SQL_USER --password=$LOCAL_SQL_PASSWORD -Bse 'show databases;')"
for DB in $DBS
do
echo " -> "$DB >> $LOG_FILE
mysqldump --user=$LOCAL_SQL_USER --password=$LOCAL_SQL_PASSWORD $DB > $SQLDUMPS_DIRECTORY/$DB.sql
mysqldump -host=$REMOTE_IP --user=$REMOTE_SQL_USER --password=$REMOTE_SQL_PASSWORD --databases $DB | mysql --user=$LOCAL_SQL_USER --password=$LOCAL_SQL_PASSWORD
done
# Compression de la sauvegarde
echo "[$(date +%d/%m/%Y-%H:%M)] Compression de la sauvegarde" >> $LOG_FILE
tar -jcvf $TEMP_DIRECTORY.tar.bz2 $TEMP_DIRECTORY
# Suppression du repertoire de sauvegarde
echo "[$(date +%d/%m/%Y-%H:%M)] Suppression du repertoire de sauvegarde" >> $LOG_FILE
rm -rf $TEMP_DIRECTORY
Sauvegarde et mise à jour d’un serveur de développement
Vous avez pu constater que le script s’occupe aussi de rapatrier des données d’un environnement vers un autre. En fait, si vous le lancez toutes les nuits il vous permettra d’avoir le matin une archive contenant l’état à J-1 de votre serveur local et un serveur local contenant les même informations (à J0) que votre serveur distant.
Cela peut être pratique dans un grand nombre de cas : si vous souhaitez synchroniser plusieurs serveurs entre eux, pour mettre à jours des serveurs secondaires selon les données d’un serveur primaire (si vous ne l’avez pas déjà fait je vous invite à lire mon billet sur la mise en place d’une architecture serveurs distribuée), pour avoir tous vos dossiers avec vous quand vous prenez votre ordinateur portable… ou dans mon cas pour être sûr que votre serveur de développement travaille avec des données actuelles et pas du lorem ipsum créé par un utilisateur « toto ».
Ensuite, chacun est libre d’adapter le script pour, par exemple ne pas sauvegarder ni mettre à jour les bases de données de développement, mais rapatrier simplement un dump des bases de données distantes, le code ressemblera alors à ça :
mysqldump -host=$REMOTE_IP --user=$REMOTE_SQL_USER --password=$REMOTE_SQL_PASSWORD --databases $DB > $SQLDUMPS_DIRECTORY/$DB.sql
Faire un dump d’une base de données distante
Par contre si vous souhaitez simplement faire une copie des fichiers, tous les jours ou toutes les semaines, je vous conseille de conserver quand même le répertoire local à synchroniser plutôt que de le créer et de l’effacer à chaque fois : de cette façon seules les modifications seront transférées et non l’intégralité des données. Si vous souhaitez faire un backup complet, en transférant toutes les données et toutes les bases de données, rien de plus simple :
mkdir $TEMP_DIRECTORY
lftp sftp://$REMOTE_SSH_USER:$BPASSWORD@$REMOTE_IP -e "mirror -e $REMOTE_DIRECTORY $TEMP_DIRECTORY ; quit"
mkdir $SQLDUMPS_DIRECTORY/
DBS="$(mysql --user=$LOCAL_SQL_USER --password=$LOCAL_SQL_PASSWORD -Bse 'show databases;')"
for DB in $DBS
do
mysqldump -host=$REMOTE_IP --user=$REMOTE_SQL_USER --password=$REMOTE_SQL_PASSWORD --databases $DB > $SQLDUMPS_DIRECTORY/$DB.sql
done
tar -jcvf $TEMP_DIRECTORY.tar.bz2 $TEMP_DIRECTORY
rm -rf $TEMP_DIRECTORY
Script de sauvegarde fichiers + bases de données
Source: http://www.responsive-mind.fr/script-sauvegarde-shell/
Debian : Installer un serveur DHCP Outils Historique Version imprimable Table des matières INTRODUCTIONINSTALLATION DE DHCPCONFIGURATION…
I. Présentation Le service DHCP est très répandu dans les entreprises afin de distribuer une…
Préalables pour le lecteur : pour tirer le maximum de profit de la lecture de cet…
Imagemagick Imagemagick est un logiciel ultra-puissant qui s'utilise en ligne de commande et qui permet de…
Mesures de sécurité essentielles à WordPress 1- Le compte Admin En premier lieu, quelque soit…
Activer le mode maintenance sur WordPress Le mode de maintenance de WordPress est activable par…