mercredi 11 janvier 2012

Crontab

L'exercice du jour consiste a réaliser une tâche qui se déroule automatiquement sur mon serveur LAMP tous les jours à minuit. La tâche en question consiste à créer un fichier d'archive avec le backup de mes bases de données mysql.

Première étape : définition de la tâche

Dans un premier temps, on crée un petit fichier exécutable avec les commandes qui vont bien.
Je nomme mon fichier DAILYBACKUP.sh et le place dans /home/user/DB/BACKUP.
Voici le contenu de mon fichier :

#!/bin/bash


# Backup de mes bases vers mon répertoire /home/user/DB/BACKUP/
mysqldump --user=root --password=motdepassesecret BASE1 > /home/user/DB/BACKUP/BASE1.sql
mysqldump --user=root --password=motdepassesecret BASE2 > /home/user/DB/BACKUP/BASE2.sql
...


cd /home/user/DB/BACKUP
# Je crée un fichier d'archive au format ANNEE-MOIS-JOUR.tgz qui contient tous mes fichiers sql
tar czfv `date +"%Y-%m-%d"`.tgz *.sql
# Plus besoin de mes backup .sql
rm *.sql

N'oublions pas de lui donner les droits en exécution : sudo chmod ugo+x DAILYBACKUP.sh


Deuxième étape : automatiser la tâche


Pour automatiser une tâche, nous allons utiliser le cron de Linux. Rien de plus simple, il suffit d'éditer le fichier crontab comme suit :

sudo crontab -e

Anciennement, l'éditeur par défaut était vi. Dans mon cas, la commande me demande de choisir mon éditeur. Tant qu'à faire, je choisi d'utiliser nano qui est très user-friendly.
Dans le crontab, j'ajoute la ligne suivante en fin de fichier :

0 0 * * * /home/user/DB/BACKUP/DAILYBACKUP.sh


Cette dernière ligne signifie que mon script DAILYBACKUP.sh s'exécutera tous les jours à 00:00.
En d'autre terme, des fichiers de backup au format ANNEE-MOIS-JOUR.tgz se créeront quotidiennement.

Et voila, mission accomplie pour aujourd'hui.

Aucun commentaire:

Enregistrer un commentaire