Sauvegardes extensives
Par effraie le samedi 08 décembre 2007, 16:35 - Logiciel libre - Lien permanent
Effraie.org héberge pas mal de sites, et la question des sauvegardes est devenue cruciale.
Bien sur, je pourrais renvoyer les utilisateur-ices à leur responsabilités, et leur demander de faire leurs propres sauvegardes. Cela dit, rien ne dit qu'elles/ils les fassent régulièrement, ni qu'ils sachent comment sauvegarder une base de données.
Je me suis donc penché sur la question, et j'ai amélioré mon rsync quotidien pour obtenir un système qui me convient mieux,
Pour assurer que les données seront à l'abri en cas de crash des disques durs internes, mon répertoire backups/ est situé sur un disque usb externe. Prochainement, je cherche également à automatiser une sauvegarde de ce répertoire sur un serveur distant
Sauvegardes des bases de données
J'utilise, suivant les conseils avisé d'un copain, le script autoMYSQLBackup.sh qu'on trouve ici. Après configuration de quelques variables, le script est opérationnel, et il ne vous reste qu'a le lier dans /etc/cron.daily/ pour obtenir une sauvegarde automatisée de chacune de vos bases. Le script conserve les backups des derniers 7 jours, une par semaine pendant un mois, et une par mois indéfiniment.
Au final, cela me permet de conserver une trace des données sur le long terme, sans pour autant user une espace disque démesuré, dans backups/sql.
Sauvegardes des données:
Pendant longtemps, je me suis contenté d'utiliser rsync pour sauvegarder les données du serveur. Cependant, je souhaitais bénéficier, comme pour les bases de données, de la possibilité de restaurer une sauvegarde plus ancienne.
Pour cela, j'ai utilisé des outils standards, rsync, cp, rm, date, find et crontab.
Le fonctionnement est simple:
sauvegarde principale:
Chaque nuit, à 2h30, je sauvegarde l'ensemble des données que je veux pouvoir restaurer dans un répertoire backups/main, avec le "mini script" suivant, qui synchronise la racine du serveur avec ma sauvegarde:
#!/bin/sh rsync -azh --exclude=/pattern/à/ne/pas/sauver --exclude=/dev --exclude=/proc --exclude=/tmp --exclude=/sys --delete-after --delete-excluded --stats / /chemin/vers/backups/main
et cette ligne dans la crontab de root:
30 02 * * * /chemin/vers/le/script/main_backup 2>&1 | mail votre@email.tld -s "[Rsync] rapport du `date +%A\ %d\ %B\ %Y`"
Je reçois ainsi chaque jour un rapport statistique sur la synchronisation, de cette forme:
Number of files: 208552 Number of files transferred: 1038 Total file size: 8.23G bytes Total transferred file size: 354.84M bytes Literal data: 354.86M bytes Matched data: 0 bytes File list size: 6230145 File list generation time: 98.647 seconds File list transfer time: 0.000 seconds Total bytes sent: 70.71M Total bytes received: 24.00K sent 70.71M bytes received 24.00K bytes 344.18K bytes/sec total size is 8.23G speedup is 116.42
En cas de problème, le mail contient la sortie d'erreur de la commande.
Journalisation des sauvegardes
Pour pouvoir restaurer des sauvegardes plus anciennes, ou des fichiers effacés il y a plusieurs jours sur le serveur (et donc absent de backups/main), j'utilise trois petits scripts simplistes, qui, associés à une ligne adéquate dans la crontab de root, me permettent de conserver l'ensemble des sauvegardes des 7 derniers jours, une sauvegarde par semaine pendant un mois, et une sauvegarde par mois pendant 6 mois.
Note ajoutée à la suite de quiproquo dans les commentaires
Le systéme de journalisation/rotation des backups utilise l'option -l de cp, pour créer des hardlinks au lieu de recopier les fichiers, dans tt les cas ou le fichier n'a pas été modifié. C'est le moyen de n'utiliser que l'espace disque minimum requis. Compresser les données dans une archive ferait perdre cet avantage, et utiliserait, finalement, plus d'espace disque.
Voici les scripts et les entrées dans la crontab qui vont avec:
daily_backup
le script:
#!/bin/sh find /chemin/vers/backups/timed/daily/* -ctime +7 -exec rm -rf {} \; cp -al /chemin/vers/backups/main /chemin/vers/backups/timed/daily/`date +%F` 2> /dev/null;
L'entrée dans la crontab:
30 03 * * * /home/effraie/scripts/daily_backup
weekly_backup
le script:
#!/bin/sh find /chemin/vers/backups/timed/weekly/* -ctime +33 -exec rm -rf {} \; cp -al /chemin/vers/backups/main /chemin/vers/backups/timed/weekly/`date +%U_%F` 2> /dev/null;
L'entrée dans la crontab:
40 03 * * 0 /home/effraie/scripts/weekly_backup
monthly_backup
Le script:
#!/bin/sh find /chemin/vers/backups/timed/monthly/* -ctime +183 -exec rm -rf {} \; cp -al /chemin/vers/backups/main /mnt/usb-data/backups/timed/monthly/`date +%m-%Y` 2> /dev/null;
L'entrée dans la crontab:
50 03 1 * * /home/effraie/scripts/monthly_backup
Avec ça, je pense être habillé pour l'hiver! Cela dit, toute suggestion d'amélioration est la bienvenue.
- Nouveautés: DotAddict, del.icio.us, et autres futilités
- mv flickr /dev/null
- Migration: Work in progress
- Pourquoi les militants délaissent les médias libres au profit des groupes capitalistes ?
- Vive le minitel libre!
- Flux de travail numérique pour le photographe sous Ubuntu
- Pistes recyclables
- Freedom not fear : le 11, journée mondiale d'action contre la société de la surveillance
- Dodeline.net, des blogs pour les cop-ains/ines
- Prochaine session classroom, demain!
- NO DATA RETENTION
- Internet, le retour: effraie.org est up!
- MPD et icecast2 - Webradio ou lecteur ultime?
- Du nouveau sur le serveur
- Postfix, Dovecot, et des utilisateurs virtuels sans Mysql
- Y'en a j'te jure...
- Release (2) de mon thème
- En vrac
- Antispam: Greylisting et Postfix
- Mise en page des listings par défaut dans apache (fancy index)
- Stickers Ubuntu : n'habite plus à l'adresse indiquée
- Mes extension firefox préférées...
- Créer son propre site
- Prochaine session Classroom : Votre propre Live CD
- Photo Dilemme
- Appel à dons - Coupure du 31 octobre
- Youtube, google.video sur Linux/PPC
- Créer un diaporama de photos avec image2mpeg
- Rando, c'est parti!
- xbelld : un beep system au doigt et à l'oeil
- Amélioration du service «emails» sur effraie.org
- Calibration d'écran, profil ICC et gestion des couleurs sous Ubuntu
- [revue-de-web] Des Bandes dessinées en ligne
- Feisty Fawn sur Power-PC
- FaceBook se fiche du monde
- Configurer Thunderbird pour l'IMAPs sur effraie.org
- PPC - Java Plugin dans Firefox
- MAJ du serveur prochaine
- Prochaine session classroom: Initiation au packaging Debian/Ubuntu
- Petit guide informatique pour cell-eux qui voudraient être libres
- Nouveau venu sur le serveur!
- Prochaine session: Vim
- Les licences et la notion de liberté
- Bibble 5, la sortie prochaine se précise!
- Le réseau des pirates
- À propos des stickers Ubuntu
- Serveur down
- La liberté, Gougueule, et tout ça...
- Inclusion des paquets ubuntu-ppc sur le dépôt edevelop
- les Tanneries menacées d'expulsion!
- Nouveautés sur le serveur
- Un script python pour calculer l'Hyperfocale (MAJ)
- Stickers ubuntu
- [Photos Blog] onexposure.net
- MeFab, ou l'intéret de crasher une architecture rare
- Un script python pour calculer l'Hyperfocale
- La sonde ColorVision Spyder fonctionnelle sous Linux avec Argyll/CMS
- Nouveau venu sur le serveur: Profs en grève!
- Thème RedLight
- Le retour en vrac
- Nouveaux hébergés
- École pour Ubunter@s: appel à contributeurs
- Retour sur les Feistyvités parisiennes
- Backport de CenterICQ (feisty2dapper)
- Autosatisfaction photographique...
- Edgy, PPC, carte son - workaround
- Webradio
- Nouveau design, sous l'impulsion de sonia!
- Un abandon du support officiel des PowerPCs?
- Ubuntu sur G5 rev C (isight)
- Un nouveau site sur le serveur
- Firefox, Thunderbird et Tango-old-plain-grey
- Mark Shuttleworth, a propos du (futur) support des PowerPCs
- Beryl/Emerald sur Edgy-PPC
- Ubuntu-ppc, combien de divisions?
- Beryl & Emerald sur ppc
- E17 empaqueté pour ubuntu edgy PPC
- Les logiciels manquant sur Ubuntu-PPC
- Un dépôt ubuntu/ppc
- Émuler les boutons 2 & 3 d'une souris
- Wifi sous ubuntu-ppc avec la carte Airport-extrem
- Ubuntu sur mac, quelques astuces.
- Abandon du support officiel des PowerPCs
- Un oeil sur Feisty Fawn
- Mise a disposition du thème Effraie, et ouverture du demo-blog
- Labo noir et blanc : c'est parti!
- Mes galeries photos en ligne
- [Revue de web] Coup de gueule: mv virusphoto /dev/null
- HOWTO Encourage Women in Linux (En français)
- Ardour et la MAO libre sous GNU/Linux
- PowerPC: la fin du suspens...
- Internet est dangereux, Nadine Morano veille sur votre sécurité
- Lenny est stable :)
- Ubuntu sur PlayStation 3, soubresauts du support PPC.
- Vol d'image
- Pourquoi GNOME est-il le meilleur bureau
- Le futur ministre de l'économie numérique vous présente tous ses vœux...
- Test terrain d'un déplacement ministériel
- [Revue de Web] Les mots sont importants
- Calvin powa!
- Expo ArtOsons aux roulottes russes
- Hadopi et quelques news
- Expo Art'Osons!
- À vendre : nikon D80 + grip + sigma 17-70
- Les chroniques de l'état policier
- Vacances randonnée!
- Une fois n'est pas coutume, je parle de mon boulot
- Vacaaaaaances !
- [revue de web] Le blog de marcel
- [exposition] Pola et les photographes
- Photo : work in progress
- Retour vers le futur
- Ubuntu-member
- Des nouvelles des antipodes
- Nouvelle Zélande : encore des photos...
- Nouvelle Zélande : C'est parti!
- Jean Marron est mort...
- Bug SNCF/chèques-vacances : workaround....
- Invitation a un Week-end d'initiation et d'échange de savoirs
- La loi des séries: Michael Brecker
- Statistiques: OS et navigateurs utilisés sur ce site
- DRM de merde!
- On a retrouvé Bart Simpson!
- Vi/vim : feuille de triche
- Badvista: la Free Software Foundation dénonce l'arrivée de TCPA avec windows® Vista™
- Nouveau thème pour Dotclear 2
- Dépôts et sources.list pour Ubuntu-ppc
- Clavier français sur mac
- Extraire le son d'une vidéo
- Hélo dans le grand nord
- Formats non libres sous ubuntu-ppc
- Accélération graphique sur ubuntu-ppc
- Bientôt l'autre bout du monde...
- Bouffeur de curé
- Gnash, et le flash sous ppc
- Trackpad Apple récent sous Ubuntu
- Statistiques: satisfaction
- Le droit de lire...
- Retour de Rome, 1° photos
- Office 2007, le piége
- Une pause pour les stickers!
- Aperture First
- Ceci est un billet de test...
- Puppetmastaz pôwa!
- [BD] XKCD, le meilleur des webzines
- [Blogs] rewriting.net
- La musique de mon frangin
- [Blogs] Le monolecte
- Pause!
- Je rejoins les Freemen...
- Haptonomie...
- Dorclear2 peut-être a la veille d'une refonte...
- Théme ''Effraie'': Un bug génant sous IE7 (IE6 non testé)
- Qu'est-ce qu'un "flux RSS" et comment s'en servir?
- Fortune
- Screenshots de vos pages web dans différents navigateurs
- 3 nouveaux venus sur le serveur
- L'économie en campagne!
- La france d'après
- Un de plus!




Commentaires
Pour mon petit serveur web, j'ai codé un script python qui se base sur rsync, et utilise les liens durs unix pour faire des sauvegardes régulières sans gaspiller de l'espace disque. J'en parle ici : http://filyb.info/post/2007/11/11/P...
Intégrer la date dans le sujet du mail ? :)
(Merci)
Sympa ce petit post!
Merci!
:o)
@skateinmars: corrigé! ^^'
J'ai recemment découvert rdiff-backup 0, un programme de backup incremental. Exemple :
% rdiff-backup /home/foo ssh://bar.org:/home/backup
% rdiff-backup -r (10D | 2007-04-7) ssh://bar.org:/home/backup /tmp
Je l'utilise depuis quelque temps pour faire mes backup sur mon disque externe et franchement, j'adore. Simple et puissant.
0 http://www.nongnu.org/rdiff-backup/
C'est certes intéressant mais je recommande vivement backuppc : un logiciel libre qui, répondant aux mêmes besoins, fournit en plus : une interface de gestion, un historique complet des versions, la possibilité de naviguer via un navigateur à travers l'historique des fichiers, une compression des fichiers, un partage de tous les fichiers identiques qui n'occupent qu'une seule fois l'espace, etc.
http://backuppc.sourceforge.net/inf...
Rsync est utilisé et cela est donc très économique en bande passante.
@+
Perso, j'utilise rdiff-backup qui permet de gagner plusieurs versions d'un répertoire. Ainsi, on peut le paramétrer facilement pour ne garder que les 5 dernières sauvegardes: je trouve cela assez pratique. De plus, derrière je compresse un coup pour gagner de la place (mais à chaque sauvegarde, je suis obligé de décompresser).
Je crois également que rdiff-backup permet de ressortir semblable aux tiennes..
Pour ceux que ca intéresse, http://be.st.free.fr/wiki/doku.php/...
@Bligneri && @BeSt: précisément, les fonctionnalités que vous décrivez, je les ai, là, et sans installer quoique ce soit.
--> mes cp se font avec l'option -l, pour utiliser les hardlinks, et donc éviter de copier deux fois le même fichier. Seul les fichiers modifiés sont copié, les autre sont des hardlinks. C'est pour cela que je ne compresse pas, ça userait PLUS d'espace disque. (mon backup "main" fait une dizaine de giga, et chaque copie supplémentaire (backups/timed/*) occupe simplement la place correspondant aux fichiers modifiés.
--> je monte en NFS ce rep dans mon réseau local, je peux donc naviguer dans l'arborescence avec le navigateur de mon chois, nautilus en général.
--> je préfére utiliser quelques scripts minuscules, fait main, avec des outils standard, que des logiciels complets/complexes, dont je ne lirais pas le code, et que je connaitrais moins bien
sudo apt-get install sbackup
{available only in Gutsy}
Mais stop, quoi... merci de ne plus me proposer des softs plus complexes et lourd que mes 3 micros-scripts... surtout s'il ne font rien de plus que mes 10 lignes de code...
Par contres, des vrais améliorations (sans interface graphique, et sans installer de paquets exotiques...), je suis preneur.
A bon entendeur :)
Moi j'utilise Bacula chez moi et au travail.
C'est plus complexe à mettre en oeuvre, il n'y a pas de jolie interface, mais ça sauvegarde des centaines de go à l'aise sur de nombreuses machines.
C'est très flexible, et les reprises (restaurations) fonctionnent très bien!
Que les gens qui pronent BackupPC m'expliquent comment faire une reprise fonctionnelle pour des gros volumes (ie pas par l'interface web) et on en reparle :)
En voilà une amélioration:
En cas de modification d'un fichier, je crois que rdiff-backup ne sauvegarde que les différences. Je veux dire que ton script, en cas de modification d'un bit sur sur un fichier de 700 Mo, va utiliser au moins 2 fois 700 Mo (-> bande passante du réseau occupée, -> espace disque encore plus rempli), alors qu'rdiff-backup n'utilisera qu'une fois 700 Mo et plus les incréments.
Je préfère, pour ma part, toujours remplacer une part de mon script par un logiciel éprouvé.
@BeSt: c'est vrai. Cela dit, pour avoir utilisé rdiff-backup, je n'ai pas apprécié du tout le manque de lisibilité/simplicité du système d'incrément. Vu la relative faible probabilité d'avoir sur ce serveur des gros fichiers qui changeraient "un peu", le bénéfice en terme de place me semble trop faible pour perdre le bénéfice de la grande lisibilité, et de n'utiliser que des outils standard (parceque oui, cp, rm, rsync, crondate et find sont plus éprouvé que rdiff-backup, malgré tt ses qualités)
Bonjour,
Merci pour cet article très bien fait.
Pour ce qui est de Rsync, pourquoi ne pas utiliser l'otion --exclude-from= suivi du nom du fichier contenant la liste des fichiers, répertoires et sous répertoires à exclure. Cela rendrait la commande plus digeste en se débarrassant des options d'exlusion à répétition et permettrait une plus grande souplesse dans les fichiers a exclure (en les ajoutant dans le fichier ).
Salut,
j'ajouterai juste un detail:
Sous ubuntu (en tout cas, les dernières versions), la commande mail ne fonctionnait plus pour envoyer les mails dans mes scripts....
Il faut utiliser la commande mailx (paquet mailx) qui fait exactement la même chose.
Cdt,
Typhoe
super sympas, merci bien :)