Console

Sauvegarder, Restaurer, cloner des disques avec dd ou cat

Table des matières

Introduction



D'habitude, je clone des disques avec Clonezilla, mais parfois, le logiciel ne veut pas cloner à cause d'erreurs.
Voici comment faire avec la traditionnelle commande dd.
On peut aussi le faire avec la commande cat. Ca va plus vite, il y a moins d'options (mais OK pour un disque entier) mais on n'a pas d'infos sur la progression.
Dans ce tutoriel, je démarre sur un Live CD

Sauvegarder un disque dans une image



Pour sauvegarder le disque /dev/sda dans un fichier, on monte d'abord la destination de la sauvegarde dans /mnt par exemple :
Disque local :
Code BASH :
mount /dev/sdb1 /mnt

Disque distant avec sshfs :
Code BASH :
sshfs adrien@server/home/images /mnt

Ensuite, on sauvegarde, et on compresse au passage
Code BASH :
dd status=progress if=/dev/sda bs=100M | gzip -c  > /mnt/image.dd.gz

Je mets un BS de 100M pour que ça aille plus vite (testé OK sur un SSD, à adapter sur un HDD)
Si on veut aller plus vite, on peut le faire avec la commande cat + compresser avec gzip. Cela fonctionne bien pour un disque entier :
Code BASH :
cat /dev/sda | gzip -c > /mnt/image.cat.gz

Restaurer une image dans le disque



Pour restaurer on effectue le processus inverse. Je passe la partie de montage de l'image :
Code BASH :
gzip -dc /mnt/image.dd.gz | dd status=progress of=/dev/sda

Si on a sauvegardé avec cat + gzip, pour restaurer on utilise :
Code BASH :
gzip -dc /mnt/image.cat.gz > /dev/sda

Cloner un disque A sur le B



Imaginons, le disque A est la source et le disque B la destination.
Il faut que B soit égal ou plus grand que A.
Pour cloner direct de disque à disque, on peut toujours utiliser dd :
Code BASH :
dd status=progress if=/dev/sda of=/dev/sdb bs=100M

Je mets un BS de 100M pour que ça aille plus vite (testé OK sur un SSD, à adapter sur un HDD)
Pour cloner avec cat, on utilise simplement :
Code BASH :
cat /dev/sda > /dev/sdb

Cloner à travers ssh



Si on veut s'éclater à copier une machine sur une autre, on peut démarrer les 2 machines sur un live CD.
Sur la machine de destination, on définit un mot de passe à root et on démarre le serveur SSH.
Si les 2 disques s'appellent /dev/sda, on pourra cloner depuis la machine source via :
Code BASH :
dd if=/dev/sda bs=100M | ssh machinedistante  'dd of=/dev/sda'

Et si on veut compresser au passage (à tester) :
Code BASH :
dd status=progress if=/dev/sda bs=100M  | gzip | ssh 10.21.21.231  'gzip -d | dd of=/dev/sda'
Cette page a été vue 629 fois