Les sauvegardes de type image ont plusieurs problèmes:
- Ils ne peuvent pas faire de sauvegardes quotidiennes / incrémentielles
- La plupart d'entre eux ne peuvent pas extraire un fichier individuel ou un ensemble de fichiers que vous réalisez avoir supprimés / écrasés
- Ils ne peuvent pas restaurer sur un disque plus petit que l'original, même s'il y avait beaucoup d'espace libre
- La restauration sur un disque plus gros nécessite souvent des étapes supplémentaires pour utiliser l'espace supplémentaire
Il est préférable de s'en tenir aux méthodes éprouvées: tar
et dump
. J'utilise dump
car il est beaucoup plus rapide à sauvegarder et à extraire des fichiers individuels que tar, et gère mieux les sauvegardes incrémentielles. Il utilise également la compression multithread, ce qui est bien sur les machines multicœurs actuelles. Dans les deux cas, lors de la sauvegarde, vous devez arrêter vos services pour vous assurer qu'aucun fichier n'est en cours d'écriture pendant la sauvegarde. Si vous utilisez LVM, il vous suffit de le faire assez longtemps pour créer un instantané, vous pouvez ensuite remettre vos services en ligne et sauvegarder l'instantané. Voici le script que j'ai cron
exécuté automatiquement tous les soirs:
#!/bin/bash
set -e
declare -a LEVELMAP=(1 5 4 5 3 5 4 5 2 5 4 5 3 5 4 5 1 5 4 5 3 5 4 5 2 5 4 5 3 5 4 5)
DATE=`date +%-d`
LEVEL=${LEVELMAP[$DATE-1]}
echo Performing a level $LEVEL dump
#shutdown services here
sync
lvcreate -s -n snap devserv/root -L 500m
#start them back up here
dump -$LEVEL -quz9 -b 1024 -f /backup/dump.$LEVEL /dev/mapper/devserv-snap
lvremove -f devserv/snap
Je fais un vidage de niveau 0 (complet) généralement tous les ~ 6 mois lorsque je mets à niveau le serveur, puis ce script fait un vidage de niveau 1 (tous les fichiers ont été modifiés depuis le niveau 0) le 1er et le 17 du mois, et alterne entre le niveau 2 -5 le reste des jours.
Cela signifie que pour restaurer le système, j'ai au plus 5 vidages à restaurer, parfois moins (si le serveur meurt juste après le vidage de niveau 1, il vous suffit de restaurer les niveaux 0 et 1), et j'ai plusieurs vidages qui s'étendent sur le ces derniers jours, semaines, mois, je peux extraire un ancien fichier si nécessaire, éventuellement plusieurs versions car il a changé à différents moments.
Si vous ne vous souciez pas d'avoir plusieurs points pour revenir en arrière et extraire des fichiers plus anciens, une alternative plus simple consiste à faire un niveau 0 une fois tous les 6 mois, un niveau 1 tous les lundis et un niveau 2 tous les deux jours de la semaine.