Depuis que mon précédent site a subi les affres du piratage et a disparu avec pertes et surtout avec fracas, je me suis penché sur le problème du backup pour mon nouveau serveur.
J’ai trouvé deux pistes intéressantes pour la sauvegarde des fichiers en général et pour la sauvegarde des bases de données. J’ai aussi trouvé un script pour copier les fichiers automatiquement sur un autre serveur via FTP. À quoi bon en effet faire des sauvegardes si c’est pour les stocker au même endroit que les données à préserver ?
Ces scripts sont valables pour une installation de Linux classique et sont facilement paramètrables. Notez que, encore moins que les auteurs originaux, je ne suis en aucun cas responsable de la perte de vos données en cas de problème. Ces scripts marchent très bien dans mon cas mais je ne peux pas garantir qu’ils correspondent à votre configuration et votre usage. Pour plus de détails, je joins la page original sur laquelle j’ai trouvé le script afin que vous puissiez juger sur pièce.
Je ne vais pas mettre le code source ici, il est sur la page liée juste au-dessus. La configuration est aisée et se fait au moyen de 5 champs :
-
COMPUTER=deep
-
DIRECTORIES="/home"
-
BACKUPDIR=/backups
-
TIMEDIR=/backups/last-full
-
TAR=/bin/tar
1. donne un nom aux sauvegardes
2. dossiers à sauvegarder, séparés par des espaces
3. où mettre les archives
4. emplacement du fichier contenant la date de la dernière sauvegarde complète
5. emplacement de l’outil ‘tar’, a priori /bin/tar
La démarche du script est de faire des sauvegardes incrémentales quotidiennes, puis tous les dimanches une sauvegarde complète est faite. Enfin, tous les premiers du mois, une sauvegarde complète est faite qui sera conservée (alors que les sauvegardes quotidiennes et hebdomadaires sont supprimées chaque semaine).
À noter donc que si on commence à utiliser le script un autre jour que le premier du mois, il faut recourir à l’astuce suivante :
-
date +%d%b < /backups/last-full/myserver-full-date
En supposant que /backups/last-full est votre variable TIMEDIR.
Ce script vous permet au final de conserver une copie de vos sites webs, fichiers de configuration, documents divers, etc.
De même, je ne vais pas revenir ici sur le code source du programme, plutôt bien expliqué et fourni sur SourceForge.
La configuration est simple : login de l’utilisateur ayant les droits sur les tables MySQL à sauvegarder, mot de passe, hôte de la base de données (on peut le faire à distance donc), liste des bases de donnés à sauvegarder de façon quotidienne et hebdomadaire, dossier où placer les sauvegardes, niveau de verbosité, taille maximale, adresse email à laquelle envoyer les rapports/données, etc.
Dans les options avancées, il est possible de sauvegarder certaines tables uniquement tous les mois (comme les tables internes de mysql) ou de configurer le style de backup (avec ou sans création de table, grouper les backups ou en faire un par base de données, compression, etc.).
Au final on a un outil très complet et facilement paramètrable.
Transfert vers serveur distant via FTP
-
#!/bin/bash
-
-
filenames="/your/folder/filebackup /another/folder/mysqlbackup"
-
hostname="IP.address.ofthe.remotehost"
-
remotefolder="/distant/folder/forthe/backups"
-
username="login"
-
password="password"
-
-
ncftpput -u $username -p $password -R -S .tmp -V $hostname $remotefolder $filenames
Je pense que ce script parle de lui même. Dans filenames, mettez la liste des dossiers à copier, avec leur chemin aboslu, séparés par un espace. Vous pouvez préciser le dossier de destination. Enfin renseignez bien les champs hostname/username/password avec le compte FTP à utiliser.
La bonne idée est évidemment d’inclure les dossiers mentionnés plus haut (pour les fichiers et pour MySQL).
Un petit coup de cron
Tous les scripts ci-dessus ne serviront à rien si ils ne sont pas exécutés régulièrement. Pour exécuter des programmes de façon périodique, Linux utilise Cron.
En tant que root, exécutez ‘crontab -e’ et ajoutez les lignes suivantes :
-
45 0 * * * /bin/bash /scripts/automysqlbackup.sh.2.5
-
0 1 * * * /bin/bash /scripts/filebackup.sh
-
30 5 * * 0 /bin/bash /scripts/copytodistantserver.sh
Ce n’est qu’un exemple mais cela exécute tous les matins à 00h45 le script de sauvegarde pour MySQL, assez rapide, puis à 1h00 la sauvegarde des fichiers et enfin, tous les dimanches à 5h30, les sauvegardes sont copiées sur un autre serveur. Attention cependant à ne pas lancer toutes les tâches en même temps pour éviter de faire ramer le serveur.
Tags: Linux




