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
Vus : 2733
Publié par Openwebtech : 26