Sauvegarde (2/x)


Il n’est pas forcément possible de faire une image de votre système chaque nuit, pour des question de place et de temps. C’est pourquoi j’ai fais un script qui fait un « dump » de mes bases (celles de mes blogs par exemple). Ce script fait également un dump de mon dépot subversion (les sources de mon livre, pensez si c’est important).

Script de Sauvegarde

Ce script est très simple, il constitue la première étape vers une mise en sécurité des données en question.

1
2
3
4
5
6
#!/bin/sh
datum=`date +%Y-%m-%d`
mysqldump -u root -p<i>mot-de-passe</i> --add-drop-table wordpress > /Volumes/Save/jax_blog-$datum.sql
mysqldump -u root -p<i>mot-de-passe</i> --add-drop-table blog_admin > /Volumes/Save/blog-admin-$datum.sql
mysqldump -u root -p<i>mot-de-passe</i> --add-drop-table gallery2 > /Volumes/Save/gallery2-$datum.sql
/usr/local/bin/svnadmin dump /Users/Shared/SVN > /Volumes/Save/svndump_$datum

On commence par définir une variable pour la date formatée aaaa-mm-jj.
Puis pour chacune des bases, on appelle mysqldump et le résultat est redirigé dans fichier dont le nom contient le nom de la base, la date et se termine par .sql.
Le même système est appliqué pour le dump du dépot subversion.
Il faut maintenant rendre ce script exécutable, avec un chmod u+x lescript.sh et s’arranger pour qu’il soit lancé toutes les nuits.
Selon que vous utilisiez Tiger ou une version plus ancienne de Mac OS X, la technique n’est pas la même.
Avec les versions antérieure à Tiger nous allons utiliser le mécanisme de la crontab (si des demandes sont faites je pourrais vous faire un topo la dessus). Pour Tiger et après nous utiliserons launchd

La crontab

Notez que la crontab fonctionne aussi avec Tiger et les versions plus récente de Mac OS X.
Il suffit d’éditer le fichier /etc/crontab.
Le premier champ représente les minutes (0 à 59), le second représente les heures (0 à 24), le troisième le jour du mois (0 à 31), le quatrième le mois (0 à 12) et le cinquième le jour de la semaine (0 = dimanche, 6 = samedi). Les valeurs qui ne sont pas positionnées sont remplacées par des étoiles (*).
Ensuite vient l’utilisateur qui va lancer le script et enfin le chemin du script.
Imaginons que nous voulions lancer le script qui se trouve dans /usr/local/bin tous les jours à 2h45. La ligne serait :

1
	45     2    *    *   *   root /usr/local/bin/lescript.sh

Une fois la modification faite enregistrez le fichier.

Launchd

Launchd est une nouveauté de Tiger. Les démons et autres tâches récurrentes sont lancés par un super démon (launchd). Les fichiers de descriptions sont en XML. Pour faire vos armes avec ce système, je vous conseil l’emploi de Lingon, une interface pour créer ces fichiers XML.
Voici le fichier que j’utilise pour lancer ma sauvegarde :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
		<key>Label</key>
		<string>net.foucry.dumpsql</string>
		<key>ProgramArguments</key>
		<array>
				<string>/usr/local/bin/dump_database.sh</string>
		</array>
		<key>StartCalendarInterval</key>
		<dict>
				<key>Hour</key>
				<integer>22</integer>
				<key>Minute</key>
				<integer>15</integer>
		</dict>
</dict>
</plist>

Le fichier se nomme de préférences comme un paquet java ou un fichier de préférences. et doit se trouver /Library/LaunchDaemon

Bientôt

Nous verrons comment envoyer nos fichiers sauvegarder sur un serveur lointain, et comment supprimer les fichiers les plus anciens.


Billet Précédent | Billet Suivant

powered by FreeBSD