Logiciels en ligne de commande

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


Si vous avez pv à votre disposition, pour suivre l'avancée :
Code BASH :
pv /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


Si vous avez pv à votre disposition, pour suivre l'avancée :
Code BASH :
pv /mnt/image.cat.gz | gzip -dc > /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


Si vous avez pv à votre disposition, pour suivre l'avancée :
Code BASH :
pv /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 status=progress if=/dev/sda bs=100M | ssh machinedistante  'dd of=/dev/sda'




On peut le faire avec cat, qui est plus rapide :
Code BASH :
cat /dev/sda | ssh 10.21.21.231  'cat > /dev/sda'


Si vous avez pv à votre disposition, pour suivre l'avancée :
Code BASH :
pv /dev/sda | ssh 10.21.21.231  'cat > /dev/sda'
Cette page a été vue 14920 fois