# [HOWTO] dump / restore

## anigel

MàJ : lundi 05 février 2007.

J'ai pu remarquer que beaucoup d'entre nous rencontraient des difficultés à manipuler les partitions de leur disque, entre autres lorsqu'il s'agissait de redimensionner ou déplacer, sans perdre pour autant les données / permissions. Les 3/4 du temps, cela se terminait par une ré-installation.

Il existe pourtant quelques outils permettant de remédier à ces soucis, mais comme souvent : ils ne sont pas d'une simplicité à toute épreuve. Je me propose donc de vous faire part de mes quelques expériences en la matière. Vous pouvez, pour expérimenter les opérations suivantes, télécharger SystemRescueCD, et l'utiliser ensuite, il contient à peu près tout ce dont vous pourriez rêver ^^.

1. Généralités.

Tout d'abord, il faut noter que si linux offre depuis quelques années le choix entre plusieurs systèmes de fichiers, ils n'offrent pas tous le même niveau de fiabilité / compatibilité / rapidité. Et bien souvent, le mieux est l'ennemi du bien.

Un exemple simple en est reiserfs. C'est un système rapide, performant, mais... peu souple. L'exemple le plus probant en est qu'il est encore aujourd'hui impossible de faire un dump de ce système de fichiers (il y eu une tentative de développement d'un reiserfsdump, qui semble aujourd'hui abandonnée, remplacée par un wrapper perl qui a recours aux services de tar). Et cette limitation risque de le cantonner à des usages non professionnels (on peut néanmoins utiliser des outils de sauvegardes tiers, qui travaillent à un niveau faisant abstraction de la structure du système de fichiers, mais cela implique un coût non négligeable, et une couche supplémentaire à configurer / maintenir).

NB : dump est un outil qui permet de créer une image parfaite de la structure d'un système de fichiers unix, en conservant toutes les informations nécessaires à sa restauration. L'outil qui sert à restaurer se nomme d'ailleurs... restore ^^.

Dans la suite de ce document, je m'attacherais donc à des systèmes de fichiers ext2 (ou ext3, qui n'est autre qu'ext2 avec un journal en plus : vous pouvez tout à fait lire un système ext3 en le "montant" comme un ext2).

2. "dumper" une partition ext.

Sur votre distrib favorite, assurez-vous d'avoir installé les outils dump et restore, sinon :

```
emerge dump
```

Dump est un outil qui fonctionne sur le mode incrémental. Cela signifie que si vous vous en servez pour faire des sauvegardes régulières de votre système de fichiers, il est capable de choisir de sauvegarder uniquement les fichiers modifiés depuis le dernier backup de niveau inférieur (voir exemple).

Le niveau 0 correspond à une sauvegarde complète, le niveau 9 au dernier niveau incrémental disponible.

Au moment où vous lancez dump, il vérifie le contenu du fichier /etc/dumpdates. Dans celui-ci se trouve la date et le niveau du dernier dump. Selon ce dernier, il fera ou non une sauvegarde incrémentale. Mais prenons un exemple, souvent plus parlant...

exemple :

Faites le lundi un dump de niveau 0. Il correspond à une sauvegarde complète, et vous avez donc une image totale de votre système de fichiers.

Le mercredi, lancez une sauvegarde de niveau 2 (les chiffres peuvent ne pas se suivre). Dump constate que la dernière sauvegarde date du lundi, et qu'il s'agissait d'une sauvegarde complète (niveau 0). Il va donc contrôler chaque fichier, et vérifier sa date de modification afin de déterminer si il a été modifié depuis la dernière sauvegarde, celle du lundi.

Le vendredi, lancez une sauvegarde de niveau 5. Elle ne sauvegardera que les fichiers modifiés entre mercredi et vendredi.

Le samedi, lancez une sauvegarde de niveau 4. Dans ce cas, dump va examiner les fichiers modifiés depuis mercredi (et non pas vendredi ! car le backup de vendredi était d'un niveau supérieur : 5).

NB : En jouant sur les niveaux de sauvegarde, vous pouvez arriver à ne faire une sauvegarde complète que 3 ou 4 fois par an, sans pour autant risquer de perdre plus de quelques heures de travail, mais ceci dépasse le cadre de ce document.

Pour l'exemple, nous allons nous limiter à une image complète (niveau 0), que nous compresserons ensuite pour éviter de perdre de la place.

La syntaxe de la commande est la suivante :

```
/sbin/dump -$LEVELua -f $FILE $DIRECTORY
```

$LEVEL : le niveau du dump (ici 0).

$FILE : le fichier dans lequel est écrit le dump.

$DIRECTORY : le point de montage à sauvegarder.

Si je souhaite sauvegarder complètement ma partition /var dans le fichier /tmp/backup.var.dump, je vais donc entrer :

```
/sbin/dump -0ua -f /tmp/backup.var.dump /var
```

Problème : ce fichier prend une taille respectable, puisque non compressé. Avec un peu de tuyauterie, on demande à dump de ne pas écrire dans un fichier, mais sur sa sortie standard, et on "pipe" ladite sortie standard dans l'entrée standard d'un outil de compression quelconque (ici gzip).

```
/sbin/dump -0ua -f - /var | gzip > /tmp/backup.var.dump.gz
```

Cette fois-ci, le fichier sera nettement plus petit, car compressé. NB : Il faudra bien sûr le décompresser avant de lancer la restauration.

3. restaurer la partition à l'identique avec "restore".

Comme je le disais plus haut, restore fait l'opération inverse de dump : il lit le fichier archive et ré-installe les fichiers tels qu'ils étaient lors de la sauvegarde (même propriétaire, mêmes droits, etc...).

Il faut tout d'abord monter la partition à restaurer, puis se placer à la racine de celle-ci :

```
mount -t ext3 /dev/sdaXXX /mnt/restauration

cd /mnt/restauration
```

Si le dump n'était pas compressé, ceci se fait directement :

```
restore -rf /tmp/backup.var.dump
```

Dans notre cas (le dump est "gzippé") : on "pipe" la sortie standard de l'outil de décompression sur l'entrée standard de restore :

```
gunzip -c /tmp/backup.var.dump.gz | restore -rf -
```

Et à ce stade-là, vous devez avoir une image parfaite de votre partition d'origine.

4. extraction de fichiers, individuellement, avec "restore".

Il est également possible, plutôt que d'effectuer une restauration totale du système de fichiers, de n'en sélectionner que quelques fichiers. Pour cela, on va utiliser le mode interactif de restore. Pour cela, on remplace l'option 'r' par l'option 'i', ce qui nous donne, en suivant toujours notre exemple :

```
gunzip -c /tmp/backup.var.dump.gz | restore -if -
```

On obtient alors un prompt, de type shell, qui permet de se "balader" dans l'arborescence de l'archive, même si cette dernière est compressée. Utilisez simplement la classique commande "cd" pour naviguer dans les répertoires. Afin d'extraire les fichiers voulus de l'archive, il est nécessaire d'abord de les "sélectionner", avec la commande add, avant d'en demander l'extraction avec la commande "extract". Par exemple, pour restaurer le contenu de /boot :

```
gunzip -c /tmp/backup.var.dump.gz | restore -if -

restore > add /boot

restore > extract
```

La restauration va alors commencer, et va reconstituer dans le répertoire courant l'arborescence du /boot. Attention donc à toujours utiliser cet outil dans un répertoire vide, dédié à cet usage, sinon vous risquez d'écraser certains fichiers.

5. Déplacer directement le contenu d'une partition vers une autre.

La procédure décrite plus haut peut parfaitement servir à migrer un système d'un disque sur l'autre, auquel cas on peut directement emboîter dump dans restore pour éviter de passer par un fichier intermédiaire. Exemple pour une partition /home :

```
cd /mnt/home_nouveau_disque

dump -0ua -f - /home | restore -rf -
```

Un détail si vous vous servez de dump / restore pour cet usage : ces outils ne restaurent pas les secteurs dédiés aux gestionnaires de boot (lilo, grub, etc...). Donc cela ne vous dispense pas de penser à les ré-installer proprement !

(à compléter... et comme d'habitude n'hésitez pas à PM pour toutes corrections / suggestions / améliorations)

Bon courage.

Ani

----------

## scout

Merci beaucoup pour ce Howto, je ne connaissait pas du tout l'existence de dump/restore !

----------

## kernelsensei

CLAP !! CLAP !! CLAP !!   :Mr. Green: 

----------

## netman

ah ouais sympas tout plein ton how to  :Very Happy: 

Un chtit coup de sticky serait pas mal pour le laisser un peu la histoire que tout le monde ne profite  :Very Happy: 

comme nous dit notre maitre du noyau :

CLAP CLAP CLAP

----------

## anigel

Je pense que yuk159 le mettra directement dans sa liste de HOWTO si il juge que le document est assez clair / utile, ça évite de laisser ouat-mille sticky, non ?

----------

## Pachacamac

Pour les sauvegardes sous reiserfs je fais avec 

```
tar -cjvlf /mnt/hdb4/system_save.tar.bz2 / -X /mnt/hdb4/exclude
```

Ce qui me permet de ne sauvegarder que la partition / sans les points de montages mais avec la création des liens. De plus la listes des répertoires qui ne doivent pas etre sauvegardés sont dans un fichier. 

Le tout peut etre bien compressé puisque le systeme fait 4.9go en .tar, 2.4go en tar.gz et 1.5go en .tar.bz2

Une des difficultés concerne l'utilisation d'archives incrémentales.

Je ne connais pas reiserfsdump, qui a essayé ?

----------

## anigel

 *Pachacamac wrote:*   

> Je ne connais pas reiserfsdump, qui a essayé ?

 

Moi  :Laughing:   :Arrow:  pas fiable encore.

----------

## Pachacamac

Quels sont les risques si je l'utilise ? 

Cela ne fonctionnera pas lors d'une restauration ou pire ca va générer des problèmes sur la partoch sauvegardé ?

----------

## anigel

Ca oublie des fichiers, et ça restaure pas forcément ce que ça a dit avoir sauvegardé, ni forcément là où ça devrait. Quelques bugs sur les codes caractères aussi. Enfin des trucs bizarre  :Smile:  !

----------

## yuk159

Ha ouai merci beaucoup  :Very Happy: 

J'ai mis à jour l'index.

----------

## zdra

tant qu'on est dans le sujet, si ya qqn de compétent dans la salle on peut parler de 'dd' pour faire des copies exacte d'un disque non ? A ce que j'ai c'est une bonne solution pour faire migrer un systeme d'un disque à un autre, et ça permet de faire passer lilo au passage. Fin c'est ce que j'ai lu mais je connais absolument pas tout ça. 

En tout cas un grd merci, je connaissais pas la moindre ligne, de ce howto. Je savais meme pas que dump/restor existait.

Ah oui et en plus très rapide le délait entre l'annonce que peut-etre tu te lancerais dans un howto et la rédaction de celui-ci  :Laughing: 

----------

## anigel

Je rajouterais un paragraphe sur dd. Outil fort basique, très puissant, mais aussi très dangereux si on ne sait pas exactement ce que l'on fait.

Ce matin je savais que j'aurais une heure à tuer l'après-midi pendant la mise à jour de mon bsd, donc je me suis dit : autant bien employer ce temps-là  :Smile:  !

----------

## moon69

moi j'aime bien dd, il copie par bloc, et ca marche avec tout meme les cd!  :Smile: 

un coupd de dd if=toto of=tata et ca roule.

j'avias vue truc sur rsync, ca me permet de sauvegarder via un reseau , sous type client-serveur. j'ai essayer mais je suis pas arriver. faut dire j'ai pas squater, mais ca me semble interressant pour remplacer des softs du commerce!

----------

## Pachacamac

Le probleme d'une copie disque a disque avec dd c'est qu'il faut redimmensionner les partoch apres la copie si les disques n'ont pas la meme taille.

Mais sinon c'est génial.

----------

## Linux.FraisE

Bonjour,

et merci pour ce howto , ca m'a permis de changer le system de fichier de ma partition / sans trop de mal.

Le seul "problème" que j"ai eu c'est que j'ai du dénicher un rescue CD ( RIP-13.0 ) qui avais Restore dans ses paquets et un noyau 2.6(livecd 2.4 boot impossible) puisque le livecd gentoo ne le contiens pas(le restore ) ou alors j'ai mal regardé.

 :Wink:  Merci

----------

## kwenspc

merci pour ce howto trés conçis sur le sujet  :Cool: 

perso pour le moment j'utilisde un truc bourrin avec tar (je suis en reiserfs, donc bon...)

l'option "-p"  est à utiliser avec tar (ça serait dommage de perdre les permissions vous croyez pas?)

----------

## anigel

 *Linux.FraisE wrote:*   

> Le seul "problème" que j"ai eu c'est que j'ai du dénicher un rescue CD ( RIP-13.0 ) qui avais Restore dans ses paquets et un noyau 2.6(livecd 2.4 boot impossible) puisque le livecd gentoo ne le contiens pas(le restore ) ou alors j'ai mal regardé.
> 
>  Merci

 

Remarque très judicieuse. Je rajoute l'info dans le HOWTO : j'utilise systemrescuecd (un liveCD basé sur Gentoo, histoire de rester dans la famille  :Laughing:  ).

----------

## Ti momo

Ca va me servir pour redimmensionner ma partoche / et ajouter 5Go comme sa si ca foire pas la peine de reinstaller (3 install en 1 semaine j'en ai marre lol)

----------

## Ti momo

Bon bah nickel je l'ai fait  :Smile: 

----------

## expl0rer

pour ceux qui veulent faire des sauvegarde de leur système il y a un package dans portage qui s'appele mondo-rescue qui est excellent, il permet de faire une image du système en live (pas besoin de passer en single user meme si c'est mieux) et il est capable de créer des images iso de la taille que l'on veut (si c'est plus grand il decoupe la sauvegarde sur plusieurs cd ou un seul dvd), et il est capable de reinstaller le système de facon autonome à partir de ces cd bootables (il utilise le kernel du système qu'on lui désigne). 

Perso je m'en sert depuis deux ans sur différents systèmes ca me permet de restaurer une version stable de mon système très rapidement.

----------

## Pachacamac

Avec mondo-rescue je n'ai jamais réussi à remettre la sauvegarde sur le disque.

----------

## expl0rer

tu as bien défini le kernel a utiliser pour le boot du cd ?

Moi ca marchait tres bien, j'avais 17 serveurs, pour lesquels je créais mes images (qui tenaient sur 1 cd car je ne sauvegardais que la partie système, les données étant archivées sur bande), et je mettais 17 minutes à restaurer le serveur fonctionnel hors restauration des données.

je dois encore avoir les fiches de procédures qui trainent chez moi au besoin

[edit] au boot je tapais la commande "nuke noresize" pour qu'il fasse tout en auto sans modifier la taille du partitionnement

----------

## El_Goretto

expl0rer: la doc du site de mondo-rescue est pas joignable, j'arrive pas à mettre la main sur une liste de "features"...

A part le fait que les backups peuvent se faire en live sans rebooter sur un liveCD par exemple, quels sont les avantages d'un mondo-rescue sur un partimage que j'utilise déjà?

----------

## Pachacamac

@expl0rer : Cela fait très longtemps et j'en ai vraiment aucune idée.

Et je crois qu'il n'était pas possible de faire une restauration sur un disque différent non ?

----------

## anigel

Je crois qu'il y aurait du monde intéressé par une doc sur ce soft, expl0rer... Si tu as un moment, peut-être un mini-HOWTO...  :Wink:  ?

----------

## lospericos_99

 *moon69 wrote:*   

> moi j'aime bien dd, il copie par bloc, et ca marche avec tout meme les cd! 
> 
> un coupd de dd if=toto of=tata et ca roule.
> 
> j'avias vue truc sur rsync, ca me permet de sauvegarder via un reseau , sous type client-serveur. j'ai essayer mais je suis pas arriver. faut dire j'ai pas squater, mais ca me semble interressant pour remplacer des softs du commerce!

 

pour rsync je l'utilise régulièrement, le howto sur Léa:

http://www.lea-linux.org/trucs/item.202.html

permet de copier, déplacer, mettre à jour la copie et réstaurer évidement.

J'ai souvent copier mon système sur une autre partition pour pouvoir tester ce que je n'osait pas faire sur mon système stable.

A utiliser depuis le live CD

[edit] partition en ext3 pas tester en reiserfs[/edit]

----------

## expl0rer

je vais vous faire ca des que j'ai 5 minutes, demain dans la journée je pense.

Sinon on peut restaurer sur des disques différents (d'ou le noresize si on restaure sur le meme disque car pas besoin de modifier les partitions)

----------

## expl0rer

Voilà c'est fait :

[HOW-TO] cloange de systeme actif avec Mondo-rescue

https://forums.gentoo.org/viewtopic-t-376471.html

----------

## anigel

EDIT du lundi 05 février 2007 : diverses corrections, et ajout du paragraphe sur le mode interactif de "restore".

----------

## zoltix

Bonjour,

 j'ai un soucis car quand j'ai essayé 

```
/usr/sbin/dump -0ua -f - /home | gzip > /share/save/imgLinux/backup.                                               home.dump.gz

  DUMP: Date of this level 0 dump: Fri Jan  4 01:35:13 2008

  DUMP: Dumping /home (an unlisted file system) to standard output

/home: Attempt to read block from filesystem resulted in short read while openin                                               g filesystem

  DUMP: The ENTIRE dump is aborted.

```

Peut être il y'a un truc que je n'ai pas compris....

Merci d'avance...

----------

## anigel

Bonsoir,

Est-ce que /home est bien monté ?

----------

## bebR

bonsoir,

je voudrais dumper tout mon système. j'ai plusieurs partitions mais je voudrais tout inclure dans un seul backup.

Je sais qu'il y a des choses à ne pas prendre si je fais :

```
dump -0ua -f - / | gzip > /backup/full.gz
```

puis-je indiquer l'exclusion de certains répertoire comme /proc ou /dev ou même /dev/shm.

Voici un le résultat de df -h :

```
Sys. de fich.         Tail. Occ. Disp. %Occ. Monté sur

/dev/sda5             9,2G  8,0G  806M  91% /

udev                   10M  196K  9,9M   2% /dev

/dev/sda6              28G   25G  2,0G  93% /home

/dev/sda7             9,7G  6,5G  2,9G  70% /var

/dev/hda1             153G   99G   54G  65% /mnt/storage2

/dev/sdb3              98G   81G   17G  83% /mnt/storage1

shm                  1013M     0 1013M   0% /dev/shm
```

merci d'avance pour vos réponses

----------

## anigel

Bonjour,

Il n'est pas possible de faire un backup total sur plusieurs partitions avec cet outil. Il travaille au niveau de la structure du système de fichier, et se trouve donc limité à ce seul système de fichiers. Je n'ai pas les options de dump en tête (un man dump te renseignera mieux), mais il ne me semble pas possible d'exclure certains répertoires. Ca n'aurait d'ailleurs pas beaucoup d'intérêt vu la finalité de cet outil ?

De toute façon /proc et /shm ne seront pas sauvegardés, puisqu'ils sont "montés" en tant que filesystem différent : ils seront donc exclus du dump.

----------

## bebR

Merci  :Very Happy: 

Donc en gros si je n'ai pas à me soucier de /proc et /shm, en faisant un dump de /, de /home et de /var, vu que je souhaite conserver cette organisation, mon système restera fonctionnel. Arrête moi si je me trompe.

Je voudrai dumper tout mon système avant de retailler les partitions. Est-ce que cela pose problème ?

Merci encore  :Wink: 

----------

## anigel

C'est exactement ça : tu fais un dump de niveau 0 pour chacune de tes partitions, tu mets de côté les fichiers de dump, puis tu les restaure lorsque tu as fini, et le tour est joué !

Tu aura probablement besoin de ré-installer grub à la main par contre.

----------

## bebR

merci beaucoup pour ta réponse, c'est parfait   :Wink: 

A+

----------

