Script Webbackup_tool: Sauvegardez vos sites simplement!
Lorsque vous avez plusieurs sites web notamment dans le cadre de l’auto-hébergement, une panne du serveur qui entraînerait la perte de vos données et une vision d’horreur à laquelle nous n’aimerions mieux pas penser.
Souhaitant un outil simple pouvant être schedulé en tâche cron sur mon serveur pour effectuer des backups complet du site, et de sa bdd, j’ai donc développé un script assez simple en bash utilisant les outils suivants :
- rsync
- mysqldump
- tar
L’intérêt du script est qu’il permet de faire des sauvegardes incrémentales de vos site en produisant à chaque fois :
- un dossier dans lesquels les fichiers sont backupés de manière incrémentale
- une tarball (datedujour-nomdusite.tar.gz)
- un dump .sql (datedujour-nomdusite-dump.sql
Afin de ne pas conserver des backups trop anciens le script supprimera à chaque fois les backups antérieur à une date prédéfini en nombre de jours dans le script.
Téléchargement
Le script dipose d’un repository sur github https://github.com/killman88/webbackup_tool où sont disponibles les fichiers ainsi qu’une documentation succinte sur le fonctionnement du script (en anglais).
Vous pouvez le télécharger directement via :
git clone --recursive https://github.com/killman88/webbackup_tool.git
Ou encore cloner le projet.
N’hésitez pas à me faire par de vos remarques ou idées qui pourraient contribuer à l’amélioration de ce script!
Prérequis
Afin de pouvoir vous connecter au serveur il est nécéssaire d’utiliser une authentification par clef ssh. Pour cela il faut générer sur le client le couple de clefs publique/privée sans passphrase et copier la clef publique sur le serveur.
ssh-keygen -t dsa
ssh-copy-id -i ~/.ssh/id_dsa.pub root@host
Vous devez également avoir rsync d’installé :
apt-get install rsync
How to
Certaines variable du script (backup.sh) doivent être renseignées :
SITE : Le chemin complet du site sur le serveur (ex: /var/www/site)
sitename : Le nom qui sera donné au dossier de sauvegarde (ex: openwebtech.fr)
bdd_name : Le nom de la bdd sur le serveur
datelimit : Nombre de jour durant laquelle la sauvegarde est conservées
L’authentification à la base de donnée du site ne se fait pas par l’intermédiaire du script mais par le fichier .my.cnf qui sera automatiquement lu par mysqldump.
Copier donc le fichier /root/.my.cnf suivant :
[client] user=login password=yourpass host=localhost
Sécurisez le fichier :
chmod 600 /root/.my.cnf
Usage
- $PROGNAME [-s] « login@host » [-d|--dest] « /dir/to/save »
- $PROGNAME [-b] [-s] « login@host » [-d|--dest] « /dir/to/save »
Cron
La mise en tâche cron du script se fait de la manière suivante, respectivement pour la partie dump de la bdd et backup des fichiers:
20 07 * * 1 /path/backup.sh -b -s root@remotehost -d /local/path/to/save/ #mysqldump 22 07 * * 1 /path/to/backup.sh -s root@remotehost -d /local/path/to/save/ #backup your website