Salagir's Blog

Bon le blog est devenu tout simple tout moche, mais j’ai passé 24h à le mettre à jour. Il a peu de visites. Son ancien design n’était pas foufou. On va en rester là, hein. C’est surtout du texte après tout.

Rangeur de backups

Vous me croyiez mort ? C’est que vous n’avez pas beaucoup suivi mes autres sites alors…
Puisque je n’ai pas fais de mise à jour ici depuis la mort soudaine de mon serveur, parlons de backups.

Bon, backuper c’est super facile. En gros j’utilise trois façons :

  • Pour une BDD : mysqldump [infos cnx] |gzip > backupbdd.sql.gz
  • Pour des fichiers peu nombreux, dont le changement est grave, genre configuration : tar czvf yoyobackup.tar.gz lesfichiers/
  • Pour des fichiers à accéder facilement, et/ou nombreux : rsync -av moi/ autremachine:moi/

Dans les deux premières solutions, j’ajoute au nom de fichier la date du jour, et hop, j’ai pleins de backups avec un version par jour, pratique si une erreur a été foutue y’a une semaine. Un backup classique n’aurai que la version d’hier, j’ai pas l’air con.

Les administrateurs réseaux connaissent bien le problème et gèrent donc des tonnes de backups par date. Évidement ils ne gardent pas tout, c’est trop gros, donc plus on remonte dans le passé, moins on a de backup.
Il existe différents moyens de gérer ces backups par date, dont dirvish pour backuper toute une arborescence et l’inépuisable logrotate, qui a le malheur de gérer beaucoup mieux les logs que les fichiers classiques comme mes fichiers compressés.

Comme je n’ai trouvé aucune solution simple de faire de l’ordre dans mes fichiers compressés pour ne pas avoir 58 fichiers au bout de 58 jours, je l’ai codée moi-même, pour changer.

Vous pouvez télécharger le code :
EDIT : j’ai réglé des bugs, nous en sommes maintenant à la version 1.1 (Avr 2009)

Il y a un mode « inoffensif », où le programme dit ce qu’il détruirait et renommerait au lieu de le faire vraiment.

Exemple d’utilisation pour ma base de donnée, grâce à laquelle lors de la mort de mon serveur, seuls quelques commentaires utilisateurs du jour même ont disparus (oui j’aurai pu aussi utiliser une synchro SQL mais je suis pas admin moi) :

#!/bin/sh

# ceci est cronné tous les jours tôt le matin

dirdate=`date +"%Y-%m-%d"`
path=/home/salagir

mysqldump -u... -p... --skip-extended-insert --all-databases | gzip > $path/backupsbdd/$dirdate.sql.gz

php organize_backups.php $path/backupsbdd/'*'

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *