Le but de ce billet est de faire un point sur la politique de sauvegarde, linux et les partitions afin de ne plus craindre de perdre son boot, son OS ou ses données.
Ca m'a été très précieux suite aux taquineries de l'installeur de Rosa.
Ce billet explique comment sauvegarder, restaurer et deplacer son OS/partition et accessoirement ses données.
Il se base sur un poste avec plusieurs linux en utilisation desktop, installés chacun sur une unique partition et les données dans une autre. Le boot est sous grub. voir le billet sur les install multiples.
  1. Sauvegarde OS
  2. Pour sauvegarder une partition entière, j'ai trouvé l'utilitaire fsarchiver qui corresponds parfaitement à ce besoin.
    Les partitions font 15/20GB et sont toutes nommées (via e2label), Le fichier de sortie est appelé "LABEL-Partition.fsa" (par exemple Korora-sda12.fsa).
    La commande à lancer pour chaque partition sera du type :
    fsarchiver savefs -o /backup/Korora-sda12.fsa -v -j2 -z 1 /dev/sda12
  3. Sauvegarde MBR
  4. Il faut de plus bien sauvegarder la table des partitions du disque au cas ou elle serait perdue.
    C'est un grand classique que celle ci soit effacée par un programme sans pourtant avoir de perte de données.
    Le résultat est d'avoir tout perdu (on peut essayer testdisk) alors que c'est très simple d'en faire une sauvegarde.
    Comme deux précautions valent mieux qu'une j'utilise 2 commandes dont je sauvegarde la sortie :
    dd if=/dev/sda of=dd.out bs=512 count=1
    sfdisk -d /dev/sda > sfdisk.out
  5. Restauration sans perte de la table de partition
  6. Il suffit booter si un autre Linux ou un media externe de restaurer le fichier via fsarchiver.
    fsarchiver restfs  Korora-sda12.fsa id=0,dest=/dev/sda12
    Si la partition destination est différente de la paritition source, il faudra éditer le fichier /etc/fstab et eventuellement les fichiers grub si ils ont étés customisé avec des nom de partition.
    Pour la fstab il faut changer la partition d'entrée qui est le premier élément (/dev/sda12) :
    /dev/sda12 / ext4 defaults,acl 1 1
  7. Restauration avec perte de la table de partition
  8. Si la partition du disque disparaît, j'applique les commandes sfdisk/dd inverses pour reprendre mon partitionnement original.
  9. Récupération de grub
  10. Il est très simple de reconstruire grub après par exemple un déplacement de partition :
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install  /dev/sda
    
    Cependant ca se complique si on doit booter sur un média externe (type livecd) ou que l'on veut restaurer grub à partir d'une partition sur laquelle on ne peut booter.
    Dans ce cas, on utilise un chroot qui permet de deplacer temporairement le / du système.
    L'exemple suivant permet de reconstituer le grub pour le disque à partir du linux de la partition 12.
    mount /dev/sda12 /mnt/
    mount -t proc none /mnt/proc
    mount -o bind /dev /mnt/dev
    mount -t sysfs sys /mnt/sys
    chroot /mnt/ /bin/bash
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install  /dev/sda
    exit
    umount /mnt 
    reboot
    En gros on met la parition cible sur le repertoire /mnt, ensuite les autres mount servent à utiliser les fichiers dynamiques de l'OS en cours d'execution dans la partition qui sera "chrootée" et enfin deplacer la racine dans cette partition puis installation de grub en utilisant les données de celle ci.
    Si il y a des partitions lvm il faut faire avant le mount :
    vgchange -a y
    lvscan
    
  11. Deplacement de paritition
  12. De la même manière il est très simple de déplacer son OS de partition.
    On boot sur un autre OS, on fait le dump, on le restaure sur une autre partition via fsarchiver.
    fsarchiver restfs  Korora-sda11.fsa id=0,dest=/dev/sda12
    Ensuite il faut monter cette partition et changer la fstab pour changer la reference du /
    On peut regenerer grub simplement avec :
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install /dev/sda 
    
    Par contre si on boot sur un media externe, il faudra passer par un chroot.

Notes :
  • Au final tout cela est très simple, un peu de pratique et cela semblera très naturel.
  • Les commandes grub peuvent etre un peu différentes selon les distro comme grub2-mkconfig ou install-grub2.
  • fsarchiver permet de sauvegarder plusieurs partitions dans un même fichier, utile en cas de systeme installé avec cette configuration.
  • J'ai ecris ce script qui automatise les sauvegardes (en fonction du type de part, montage, MBR ...).


  1. Sauvegarde des Données
  2. Pour les données afin qu'elle restent accessible sous forme de file system sur disque externe, j'utilise rsync, il y a beaucoup de doc sur cette commande, je ne m'étant pas sur le sujet.
    Par rapport à fsarchiver qui prends une image à un instant t, rsync copie des données selon pas mal de critères.
    J'ai fais un script qui utilise un fichier de propriété pour sauvegarder les repertoires importants (home,musique, photos ...).