Wiki Root66

Le Wiki de Root66, tuto, infos et astuces

Outils pour utilisateurs

Outils du site


la_sauvegarde_incrementale

LA SAUVEGARDE INCRÉMENTALE

QU'EST-CE QUE C'EST

Une sauvegarde normale sauve un ensemble de répertoires et/ou de fichiers. Si l'ensemble est important, la durée de l'opération peut-être longue. Une sauvegarde incrémentale consiste à faire d'abord une sauvegare normale, puis, à intervalles réguliers, une sauvegarde des seuls fichiers ou répertoires qui ont été modifiés depuis. D'où une économie d'espace disque et de temps machine, et on ne fait pas travailler le disque dur inutilement.

BUT

Cela peut servir à sauvegarder des répertoires de données automatiquement sur un disque dur. Par exemple une sauvegarde de la partition /home, qui contient toutes les données des utilisateurs. Cela peut être plus pratique que d'utiliser un graveur, c'est automatique et c'est moins cher en Cdroms : il suffit d'avoir un disque dur opérationnel. On peut aussi sauvegarder sur plusieurs disques dans son PC, pour assurer. Le seul risque de perte totale de données, c'est si tous les disques dans le PC sont détruits en même temps…

COMMENT FAIRE

On pourrait utiliser des utilitaires tout faits comme il en existe sur certaines distributions, mais on peut aussi utiliser le service anacron, qui existe pour toutes les distributions GNU/Linux. C'est un service qui est adapté à un ordinateur qui ne fonctionne pas en permanence. L'avantage d'utiliser anacron est que cela marche avec un unique fichier de configuration (/etc/anacrontab), qui est facilement portable sur n'importe quel système GNU/Linux et quand vous changez ou mettez à jour votre distribution.

Pour faire une sauvegarde, la commande de base est :

tar -cvzf destination.tar.gz /source

Cela archive, avec compression, le répertoire /source dans le fichier destination.tar.gz.

NB : Pour plus de détails, voir la page de manuel de la commande tar : man tar.

On fait donc une sauvegarde mensuelle, totale ; puis tous les n jours, on fait une sauvegarde incrémentale. Pour cela, on crée la liste des fichiers qui ont été modifiés depuis la dernière fois, puis on sauvegarde les fichiers donnés par cette liste, et c'est tout.

En pratique, on peut faire une sauvegarde totale tous les 28 jours, puis une incrémentale 7 jours après, puis 14, puis 21 jours après. Ainsi on a au bout d'un mois un fichier de sauvegarde totale, 3 fichiers de liste et 3 fichiers de sauvegarde incrémentale.

Voici enfin les commandes pour sauvegarder le répertoire /home :

Sauvegarde totale :

nice tar -cvzf /mnt/mon_disque_de_sauvegarde/ma_sauvegarde.tar.gz /home

nice, sans option, permet de baisser le niveau de priorité de la tâche. On peut aussi définir un niveau de priorité plus bas, par exemple nice -n 15 tar -cvzf /mnt/mon_disque_de_sauvegarde/ma_sauvegarde.tar.gz /home . La commande tar sauvegarde le répertoire /home dans le fichier /mnt/mon_disque_de_sauvegarde/ma_sauvegarde.tar.gz.

Sauvegardes incrémentales :

Pour la première sauvegarde 7 jours après :

nice find /home -mtime -7 \! -type d -print > /mnt/mon_disque_de_sauvegarde/listehebdo7

puis

nice tar -cvz -T /mnt/mon_disque_de_sauvegarde/listehebdo7 -f /mnt/mon_disque_de_sauvegarde/hebdo7.tar.gz

La commande find cherche les noms des fichiers modifiés depuis 7 jours (-mtime -7) dans /home. La forme “! -type d” indique à find d'exclure les répertoires (type d, directory). Le caractère \ permet d'échapper le point d'exclamation qui suit, pour interdire au shell de l'interpréter, car il est destiné à find. L'option -print affiche les noms de fichiers sur la sortie standard, et > les redirige dans le fichier listehebdo7. La commande tar -cvz -T sauve les fichiers de cette liste dans hebdo7.tar.gz. Attention au “-f” au milieu, qui définit le nom du fichier.

Pour les deux autres sauvegardes 14 et 21 jours après : on entre les mêmes commandes, en remplaçant les “7” par des “14” puis des “21”.

A la fin, on obtient les fichiers suivants dans /mnt/mon_disque_de_sauvegarde/ :

  • ma_sauvegarde.tar.gz
  • listehebdo7
  • listehebdo14
  • listehebdo21
  • hebdo7.tar.gz
  • hebdo14.tar.gz
  • hebdo21.tar.gz

INSTALLATION

Il faut d'abord installer le paquetage anacron, disponible sur tout système GNU/Linux. Celui-ci installe son fichier de configuration /etc/anacrontab. On sauvegarde ce fichier, par exemple, sous le nom /etc/anacrontab.origin. On ouvre /etc/anacrontab (sous root) dans un éditeur de texte et on entre les périodicités, les délais de démarrage et enfin les commandes. Il faut bien sûr respecter la syntaxe de ce fichier. Il est intéressant de consulter les pages man de anacron et anacrontab. Enfin on sauvegarde ce fichier…

Et voici mon fichier anacrontab :

#sauvegarde incrémentale 7-14-28 jours
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# These entries are useful for a Mandrake system.
1 5 cron.daily run-parts /etc/cron.daily
7 10 cron.weekly run-parts /etc/cron.weekly
30 15 cron.monthly run-parts /etc/cron.monthly
28 6 cron.monthly nice tar -cvzf /mnt/mon_disque_de_sauvegarde/home.tar.gz /home
7 10 cron.1weekly nice find /home -mtime -7 \! -type d -print > /mnt/mon_disque_de_sauvegarde/listehebdo7;nice tar -cvz -T /mnt/mon_disque_de_sauvegarde/listehebdo7 -f /mnt/mon_disque_de_sauvegarde/hebdo7.tar.gz
14 12 cron.2weekly nice find /home -mtime -14 \! -type d -print > /mnt/mon_disque_de_sauvegarde/listehebdo14;nice tar -cvz -T /mnt/mon_disque_de_sauvegarde/listehebdo14 -f /mnt/mon_disque_de_sauvegarde/hebdo14.tar.gz
21 13 cron.3weekly nice find /home -mtime -21\! -type d -print > /mnt/mon_disque_de_sauvegarde/listehebdo21nice tar -cvz -T /mnt/mon_disque_de_sauvegarde/listehebdo21 -f /mnt/mon_disque_de_sauvegarde/hebdo21.tar.gz

En pratique, je fais une sauvegarde totale de /home dans /mnt/mon_disque_de_sauvegarde. Ensuite j'ai une série de commandes pour chaque sauvegarde incrémentale dans /mnt/disque_de_sauvegarde. Notez que les commandes sont chaînées par un point-virgule (syntaxe du shell). Les délais permettent de démarrer les commandes au moment désiré.

Et c'est tout.

UTILISATION

Après avoir modifié le fichier /etc/anacrontab, on fait manuellement une sauvegarde totale, pour l'initialisation, avec : nice tar -cvzf /mnt/mon_disque_de_sauvegarde/home.tar.gz /home

Ensuite, c'est automatique : donc, si J est le jour de la première sauvegarde totale, on a une sauvegarde incrémentale à J+7, une autre à J+14, et encore une autre à J+21, et à A J+28, on a une nouvelle sauvegarde totale. Les sauvegardes suivantes écrasent les précédentes. Notez que, comme anacron a un fonctionnement asynchrone, chaque sauvegarde ne se fait qu'après le délai prévu, lorsque l'ordinateur est remis en marche. A titre d'exemple, mon répertoire /home fait 500 Mo, mon home.tar.gz 270 Mo, et les trois fichiers hebdo7.tar.gz, hebdo147.tar.gz et hebdo21.tar.gz font respectivement 40, 50 et 66 Mo. Chaque sauvegarde intermédiaire est donc bien plus légère et rapide qu'une sauvegarde totale.

RESTAURATION

En cas de destruction du répertoire /home ou simplement de pertes de données, il suffit de restaurer d'abord la sauvegarde totale, puis uniquement la sauvegarde à 7, 14 ou 21 jours, celle qui est la plus proche de la date du jour de la destruction.

Attention, si l'on ne restaure pas juste après la destruction, il faut arrêter la sauvegarde incrémentale, sinon des sauvegardes automatiques du répertoire endommagé auront pu avoir lieu entre-temps, au moins tous les 7 jours… Pour cela, remplacer provisoirement le fichier anacrontab par le fichier d'origine (celui renommé en anacrontab.origin).

Exemple : le 12 septembre, je perds mon répertoire /home, et j'ai les sauvegardes suivantes :
- totale au 1er septembre,
- à 7 jours le 10 septembre,
- à 14 jours le 18 août,
- à 21 jours le 26 août,
donc je restaure la sauvegarde totale faite le 1er septembre, puis la sauvegarde à 7 jours le 10 septembre.

D'où les commandes :

tar -xvzf home.tar.gz
tar -xvzf hebdoj.tar.gz
(avec j=7,14 ou 21)

IMPORTANT : Ce fichier contient la référence à /home, donc attention au moment de la restauration, si on la fait sous / (répertoire racine), on risque d'écraser son propre répertoire /home (voir la page de manuel de la commande tar : man tar). Donc le faire de préférence sous /temp, puis copier les fichiers sous /home à sa convenance.

AMÉLIORATIONS

On peut envisager de mettre ceci dans un script, d'organiser des sauvegardes journalières, de ne sauvegarder que les données sans les paramètres utilisateurs (fichiers .*), de vider les caches du navigateur internet, de baisser encore plus la priorité des tâches, de copier la sauvegarde sur un réseau, etc.

PLUS D'INFORMATIONS

Consulter les pages de manuel des commandes tar, nice, find, anacron, anacrontab.

REMERCIEMENTS

Le principe de la sauvegarde incrémentale cité ici, ainsi que les commandes utilisées, ont été repris et adaptés à partir du livre “Le Système Linux”, par Matt Welsh & Lar Kaufman, éditions O'Reilly, 2ème édition.

Jean-Luc DUFLOT, Root66.net
jld78 CHEZ @tele2 POING fr

la_sauvegarde_incrementale.txt · Dernière modification : 2021/10/18 16:09 de 127.0.0.1