Comment je sauvegarde mon serveur avec rsync

La sauvegarde… on en parlera jamais assez tellement elle est importante dans tout système informatique, du plus petit ou plus grand. Aujourd’hui de plus en plus de souvenirs et de documents sont stockés sur nos machines qu’il faut sans cesse sauvegarder.

Qui n’a jamais perdu quelques gigaoctets de données et s’en est bien mordu les doigts ?

A ma plus petite échelle, il est important de conserver une sauvegarde de mon blog par exemple car si le serveur que je loue chez OVH tombe en panne… Je n’aurai que mes yeux pour pleurer. Sauf que j’ai mis en place une petite solution de sauvegarde avec rsync que je vous propose de découvrir !

Alors elle ne casse pas quatre pattes à un canard, mais ça pourra peut-être vous resservir. Personnellement j’avais juste besoin de conserver mon /home, les bases de données MySQL et le dossier /etc au cas où j’ai besoin de remonter à serveur neuf.

J’ai donc développé un petit script qui me récupère toutes mes bases de données MySQL, crée une archive du dossier /etc et une archive par /home (oui je partage mon serveur avec des amis).

Voilà :

#!/bin/bash
#
# Script de sauvegarde Chewbacca
#
 
DIRSAVE=/home/backup
 
DATE=`date '+%Y%m%d'`
FILE=${DATE}.tar.gz
LOG=${DIRSAVE}/backup-${DATE}.log
rm -rf *.log
 
#---
# Sauvegarde des bases de données MySQL
#---
rm -rf sql/*
echo "`date '+%Y%m%d%H%M%S'` - Début de la sauvegarde des bases de données MySQL" >> $LOG
for db in `mysql -uroot -h localhost -pmot_de_passe -Bse 'show databases'`; do
  if [ "$db" != "information_schema" ]; then
    mysqldump -uroot -h localhost -pmot_de_passe --events $db | gzip -9 > sql/mysql-${db}.sql.gz
  fi
done
echo "`date '+%Y%m%d%H%M%S'` - Fin de la sauvegarde des bases de données MySQL" >> $LOG
 
#---
# Sauvegarde des fichiers
#---
# /home des utilisateurs
rm -rf home/*
echo "`date '+%Y%m%d%H%M%S'` - Début de la sauvegarde du répertoire /home/atomiix." >> $LOG
tar cPfz home/atomiix-${FILE}   /home/atomiix >> $LOG
echo "`date '+%Y%m%d%H%M%S'` - Fin de la sauvegarde du répertoire /home/atomiix." >> $LOG
 
echo "`date '+%Y%m%d%H%M%S'` - Début de la sauvegarde du répertoire /home/guillaume." >> $LOG
tar cPfz home/guillaume-${FILE} /home/guillaume >> $LOG
echo "`date '+%Y%m%d%H%M%S'` - Fin de la sauvegarde du répertoire /home/guillaume." >> $LOG
 
echo "`date '+%Y%m%d%H%M%S'` - Début de la sauvegarde du répertoire /home/marc." >> $LOG
tar cPfz home/marc-${FILE}      /home/marc >> $LOG
echo "`date '+%Y%m%d%H%M%S'` - Fin de la sauvegarde du répertoire /home/marc." >> $LOG
 
# /etc
rm -rf etc/*
echo "`date '+%Y%m%d%H%M%S'` - Début de la sauvegarde du répertoire /etc." >> $LOG
tar cPfz etc/etc-${FILE}        /etc >> $LOG
echo "`date '+%Y%m%d%H%M%S'` - Fin de la sauvegarde du répertoire /etc." >> $LOG
 
#---
# Envoi des données vers home.guillaume-leduc.fr
#---
echo "`date '+%Y%m%d%H%M%S'` - Début du transfert vers home.guillaume-leduc.fr" >> $LOG
rsync -azt -e "ssh -i /home/guillaume/.ssh/id_ecdsa" --del --filter "- *.log" /home/backup/ guillaume@home.guillaume-leduc.fr:/home/chewbacca/
echo "`date '+%Y%m%d%H%M%S'` - Début du transfert vers home.guillaume-leduc.fr" >> $LOG

Alors oui, c’est sans doute loin d’être parfait, mais ça fait le job ! La sauvegarde contenue dans /home/backup sur mon serveur distant est rapatriée sur mon serveur perso à la maison (home) grâce à rsync, via SSH.

Utiliser rsync via ssh sans mot de passe

J’ai tout simplement utilisé un jeu de clés sans passphrase pour que rsync puisse utiliser SSH sans mot de passe ! J’évoquais cette technique dans un précédent billet mais pour vous rafraîchir la mémoire (en plus je suis un gars cool) :

  1. On génère un jeu de clé (ici à partir de mon serveur à sauvegarder) :
    ssh-keygen -t ecdsa -b 384

    Sans mettre de passphrase…

  2. On envoie la clé au serveur de sauvegarde :
    ssh-copy-id -i ~/.ssh/id_ecdsa.pub guillaume@home.guillaume-leduc.fr
  3. Essayez de vous connecter pour valider la clé :
    ssh guillaume@home.guillaume-leduc.fr

    Normalement aucun mot de passe ne doit vous être demandé.

  4. C’est tout !

J’espère que ça pourra vous rendre service ! En attendant si vous avez des questions… Commentaires !

Cet article vous a plu ? Partagez-le sur les réseaux sociaux !

Twitter Facebook Google Plus email