Lorsque l’on utilise un système Linux, il peut être intéressant d’être en capacité de restaurer son système après un incident, ou une mise à jour qui s’est mal passée. Nous allons voir comment sauvegarder et restaurer la partie système de son OS Linux.
Le système est sur une partition /
et les données sont sous une autre partition /data
. On souhaite sauvegarder et restaurer tout l’espace /
. Pour cela, nous n’utiliserons pas d’outils spécifiques si ce n’est ceux natifs à la plupart des systèmes Linux.
Nous allons en effet utiliser la commande tar
pour faire une archive du système que nous pourront alors stocker sur une clé USB ou un espace de stockage réseau, facilement disponible en cas de besoin de restauration.
A titre d’exemple, ce genre de restauration va par exemple vous être d’un grand secours si vous avez supprimé par erreur un dossier crucial de votre système comme /etc
ou /usr
, ou alors si vous avez eu une mise à jour qui s’est mal passée sur votre système.
Dans un premier temps, il nous faut sauvegarder notre système, nous utilisons pour cela la commande tar
avec certaines de ses options.
Dans un premier temps, nous allons effectuer notre sauvegarde en local sur l’OS sauvegardé. En tant que « root », on se positionne par exemple dans le /root
cd /root
On déclenche la commande de sauvegarde du système. Attention, assurez vous d’avoir au moins 50% de votre disque dur de libre. Si ce n’est pas le cas, je vous recommande d’utiliser un périphérique de stockage branché en USB par exemple, positionnez vous alors dans ce périphérique pour déclencher la commande de sauvegarde :
tar cvpjf backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=backup.tar.bz2 --exclude=/mnt --exclude=/sys --exclude=/boot --exclude=/tmp --exclude=/dev --exclude=/run /
La commande va créer une archive du système dans le fichier backup.tar.bz2
. Voici le détail des options utilisées :
-c
: Permet de créer une nouvelle archive
-v
: Afficher de manière détaillée la liste des fichiers traités, cela permet de suivre l’avancement de la création de l’archive
-p
: Permet de préserver les permissions qui sont sur chaque fichiers, ce qui est très utile en cas de restauration
-j
: Spécifier la création au format bzip2
-f
: Permet de spécifier le nom du fichier archive de destination
Nous allons ensuite passer plusieurs fois le paramètre --exclude=
qui permet d’exclure de la construction de l’archive certains répertoires.
On fini ensuite par spécifier la racine /
qui est ce qui va être sauvegardé. J’ai également pris pour habitude d’exclure le dossier /boot
, car la restauration du dossier /boot
sur un système qui n’a pas de mal à démarrer perturbe le boot, ce qui aggrave le problème plus qu’autre chose.
Si vous avez des problème dés le démarrage de votre machine, je vous conseille de réinstaller votre grub grâce à ce tutoriel : Réinstaller le grub Linux depuis un LiveCD
L’exécution de cette commande peut prendre quelques minutes en fonction de la taille de votre système.
Le stockage de l’archive est ici important. Dans la plupart des cas, il est plus qu’évident qu’il faille stocker cette archive dans un autre espace de stockage que le poste sur lequel elle a été créée. Cela simplement pour prévenir un endommagement de l’archive en cas de mauvaise manipulation. Je vous conseil trois moyens de stockages, généralement à disposition de tous :
Quel que soit le moyen de stockage, votre système entier ce situe maintenant dans un simple fichier, transportable et entreposable facilement.
Nous ferons le test de restauration depuis une clé USB. Faisons donc une copie du système sur ce média.
Dans le pire des cas, et si votre système est vraiment mal en point, il est toujours possible de le restaurer grâce à la sauvegarde faite précédemment. Pour cela, il est recommandé de disposer :
backup.tar.bz2
produit précédemment, disponible sur un espace de stockage (USB, réseau, …) et prêt à être utilisé.Dans un premier temps, tentons donc depuis une distribution Live Linux. Après avoir booté sur le système, on se retrouve avec un terminal et on exécute la commande suivante en tant que root pour voir les partitions détectées :
fdisk -l
Résultat :
Ici, nous voyons donc deux disques :
Le disque sda
est donc le disque du système Linux, qui se caractérise notamment par la présence d’une partition swap
(sda5
), ma partition système étant /dev/sda1
. La clé USB, elle, correspond à /dev/sdb1
.
Le principe étant de décompresser ce qui est stocké dans ma clé USB /dev/sdb1
vers la partition Linux /dev/sda1
, il nous faut maintenant monter les deux partitions sur notre système Live Linux pour effectuer l’opération, rien de plus simple !
On commence par préparer deux répertoires pour notre montage, puis on effectue le montage :
mkdir /mnt/OS
mkdir /mnt/USB
mount /dev/sda1 /mnt/OS
mount /dev/sdb1 /mnt/USB
Une fois que nos montages sont prêts, il ne reste plus qu’à effectuer la décompression de notre archive vers notre système Linux, autrement dit, on procède à la restauration !
tar xvpfj /mnt/USB/backup.tar.bz2 -C /mnt/OS
Ici, l’option -C
permet de spécifier le répertoire de destination lors de la décompression de l’archive, on pointe donc ici vers le montage de notre système.
On pourra ensuite recréer les dossiers non sauvegardés :
mkdir /proc
mkdir /mnt
mkdir /sys
Si vous effectuez votre restauration depuis un NAS ou un autre espace de stockage en réseau, je vous conseille d’effectuer la même manipulation en montant votre partage directement sur votre système Live.
Si votre système reste stable et n’a pas de mal à démarrer, dans le cas ou vous souhaitez restaurer son état depuis la machine elle même (en local), il suffit d’exécuter la commande suivante (après avoir monté le clé USB contenant le backup dans /mnt/USB
dans ce cas) :
tar xvpfj /mnt/USB/backup.tar.bz2 -C /
Ici, le système va se restaurer lui même. Les dossiers supprimés et les fichiers modifiés seront donc restaurés.