Ernest

Automatiser ses backups

Un coffre-fort

Sommaire


Introduction

Nous verrons dans ce document comment effectuer un backup de ses données (avec TAR) à heures fixes (avec CRON) et comment les uploader sur un ftp externe (avec NCFTP), le tout de manière automatique.

[ sommaire ] | [ home ]


Comment proceder à l'archivage (tar)

Tar (Tape ARchiver) est une commande destinée à l'origine à l'archivage et la restauration de données sur bande. Toutefois il est possible de l'utiliser dans des contextes multiples. Nous souhaitons faire le backup de notre site web local. La première chose à faire est de définir clairement ses besoins en définissant ce que l'on souhaite sauvegarder.

La commande complete est donc la suivante:


tar -czf /home/stephane/backup/backup.tar.gz /var/www/html/ --exclude /var/www/html/books

Commentons un peu cette ligne:

La commande tar dont je vous invite à consulter le man lance l'archivage. L'option 'c' lui indique qu'il s'agit de creation d'une archive. L'option 'z' précise que l'archive doit être compressée. Et l'option 'f' permet de spécifier le nom et l'emplacement du fichier où seront archivées les données.

/home/webernest/backup/backup.tar.gz indique à tar que le fichier destination est backup.tar.gz (l'extension .tar.gz permet de voir qu'il s'agit d'une archive, le nom backup est arbitraire quoique logique.) J'ai choisi de placer ce fichier dans mon home dans le sous repertoire ~/backup spécialement créé pour cela.

Le repertoire indiqué ensuite /var/www/html/ est donc ce que tar doit archiver: par defaut tar va fonctionner en récursif et bien préserver l'arborescence.

Le dernier paramètre --exclude /var/www/html/books est franchement pratique puisqu'il permet d'exclure un repertoire ou un fichier. En l'occurence, le sous-répertoire /var/www/html/books et ses sous-répertoires ne seront pas archivés.

Après l'execution de cette commande j'ai donc un fichier /home/stephane/backup/backup.tar.gz

[ sommaire ] | [ home ]


Comment procéder à l'upload (ncftp)

Pour effectuer l'upload nous utiliserons le logiciel ncftp qu'il faut donc installer (apt-get install ncftp sous Debian ou meme depuis les sources). La page officielle vous en apprendra plus sur ce très bon client FTP. Il est livré en particulier avec une commande utilisable de maniere non interactive qui permet d'integrer des uploads de fichiers dans un script shell avec la commande ncftpput. C'est très précisément ce qui nous interesse ici.

Voici la commande complète:


ncftpput -u login -p pass webperso.provider.fr /backup/web/ /home/stephane/backup/backup.tar.gz

ncftpput va uploader le fichier. -u permet de specifier le login, -p le mot de passe. On indique ensuite l'adresse du serveur ftp (IP ou URL). Ensuite il faut preciser le repertoire dans lequel on va transferer le fichier, en l'occurence /backup/web. Pour finir on indique à ncftpput le fichier local à transferer, ici /home/stephane/backup/backup.tar.gz.

[ sommaire ] | [ home ]


Comment automatiser le backup (cron)

Jusqu'ici nous avons vu les commandes à utiliser, cependant, le but est de confier la tâche à notre machine. Nous allons donc creer un script bash qui va effectuer le backup et l'upload. Il suffit d'ouvrir un nouveau fichier avec vi que nous appellerons wwwbackup.sh et d'y indiquer les lignes suivantes:


#!/bin/sh

# creation de l'archive
tar -czf /home/stephane/backup/backup.tar.gz /var/www/html/ --exclude /var/www/html/books
# upload de l'archive
ncftpput -u login -p pass webperso.provider.fr /backup/web/ /home/stephane/backup/backup.tar.gz

Sauvegardez et n'oubliez pas de faire un chmod +x wwwbackup.sh . Désormais il suffit de lancer le script ./wwwbackup.sh pour que le processus sauvegarde & upload soit effectué. Nous allons pouvoir l'inclure dans la crontab afin que cette sauvegarde soit faite tous les jours à 5h00 du matin. Voici la ligne à ajouter dans la crontab (crontab -e)


00 05 * * * /home/stephane/scripts/wwwbackup

[ sommaire ] | [ home ]