Puis-je utiliser dd, rsync, clonezilla ou n’importe quel outil pour cloner uniquement l’espace utilisé sur mon disque dur sous Linux? Je dois effectuer une sauvegarde d'un disque dur 1 TB (avec seulement 2 Go d'espace disque utilisé) sur un disque dur de 500 Go.
Vous pouvez le faire, mais vous devez d'abord préparer votre disque. L'astuce consiste à utiliser un fichier fragmenté ou une compression. Cette méthode prend du temps, elle génère des E/S élevées. Dans votre cas (2 Go utilisés sur 1 TB HDD) une copie de fichier (comme suggéré dans le commentaire de la sciure de bois) sera probablement une solution de meilleure qualité. Si, par contre, vous aviez par exemple 850 Go utilisés sur 1 To, de nombreux petits fichiers, vous vouliez sauvegarder le MBR, la table de partition, les métadonnées, tout cela à la fois - ma méthode serait alors un moyen raisonnable de sauvegarder au moins 150 Go sur le fichier image (qui ne peut toujours pas rentrer dans un disque dur de 500 Go, à moins que les données ne soient suffisamment compressées).
J'écris ceci pour les utilisateurs qui utilisent beaucoup de disques. Notez également que le lecteur source doit être en bon état et permettre de remplacer l'espace vide. Je donne la solution principalement pour la sauvegarde, pas de récupération ni pour l'investigation Le temps et les frais d'E/S seront payés non seulement lors de la création de l'image, mais également lors de la réécriture de l'image sur le disque. Réfléchissez à deux fois si la méthode vous convient.
Disons que vous devez cloner /dev/sdb
et qu'il existe plusieurs partitions: /dev/sdb1
, /dev/sdb2
…
Pour tirer le meilleur parti des fichiers fragmentés ou de la compression, vous devez écraser les espaces vides avec des zéros:
## Most commands need Sudo.
mount -o rw /dev/sdb1 /mnt
dd if=/dev/zero of=/mnt/zero_file bs=32M
## Long wait here. Expect "no space left on device".
sync
rm /mnt/zero_file
umount /dev/sdb1
## Repeat this with /dev/sdb2, /dev/sdb3 etc.
En cas de partition Windows, il peut y avoir des problèmes dus au hibernation de Windows. Lisez ceci .
S'il y a des lacunes importantes dans la disposition des partitions, vous devez également les remplir avec des zéros. Les partitions d'échange (le cas échéant) nécessitent un traitement spécial afin de réduire au maximum la qualité de l'image résultante. Les fichiers Windows tels que hiberfil.sys
, pagefile.sys
et swapfile.sys
peuvent être supprimés avant la création de zero_file
. Je ne couvrirai pas ces cas en détail ici.
Cette méthode peut être utilisée si le système de fichiers cible (où le fichier image sera enregistré) prend en charge les fichiers fragmentés. Pour générer un fichier image fragmenté, appelez:
## dd probably needs Sudo here.
dd if=/dev/sdb of=/foo/bar/my_image.dd bs=512 conv=sparse
(EDIT: à l’origine, il y avait bs=32M
mais ce n’est pas un bon choix avec conv=sparse
. Comparez cette question .)
Pour réécrire l'image:
## dd probably needs Sudo here.
dd if=/foo/bar/my_image.dd of=/dev/sdb bs=32M
Avantages:
mount -o offset=…
ou utiliser kpartx
) pour accéder aux fichiers qu'elle contient.Désavantages:
cp --sparse=always
).Pour générer l'image:
## dd probably needs Sudo here.
dd if=/dev/sdb bs=32M | gzip -c > /foo/bar/my_image.dd.gz
Pour réécrire l'image:
## dd probably needs Sudo here.
gzip -cd < /foo/bar/my_image.dd.gz | dd of=/dev/sdb bs=32M
Ces commandes peuvent être construites sans dd
, avec gzip
uniquement. J'ai utilisé dd
pour assurer une mémoire tampon de 32 Mo.
Avantages:
Désavantages:
Pour surveiller la progression, appelez dd
avec l'opérande status=progress
. Si dd
fonctionne déjà sans ce logiciel (par exemple, votre dd
ne prend pas en charge status=progress
ou si vous avez oublié de l'utiliser), envoyez le signal USR1
à l'outil:
kill -s USR1 $(pidof dd)
et répéter au besoin.
Vous pouvez également utiliser pv
pour lire. Exemples:
pv -B 32m /dev/sdb | dd of=/foo/bar/my_image.dd bs=512 conv=sparse
pv -B 32m /dev/sdb | gzip -c > /foo/bar/my_image.dd.gz
Pour compresser rapidement, utilisez gzip --fast
, pour compresser au mieux, utilisez gzip --best
. Reportez-vous à man gzip
pour plus d'options.
Utilisez pigz
au lieu de gzip
si vous le pouvez. Cela devrait accélérer les choses car pigz
peut utiliser plus d'un cœur de processeur. Vous pouvez utiliser un autre compresseur si vous le souhaitez.
Si le disque cible est déjà formaté, le deuxième disque est branché sur le même ordinateur que le premier, il est monté et, si vous utilisez Linux ou Mac:
rsync -avP --ignore=/media/disk2 / /media/disk2
Si le disque cible est déjà formaté, le deuxième disque est formaté et monté sur un autre PC, et si vous utilisez Linux ou Mac:
rsync -avP / user@ip_of_disk2_Host:/media/disk2
Cela suppose que vous souhaitiez simplement une sauvegarde des fichiers sans tenir compte du lecteur sous-jacent. Cela effectue une sauvegarde PAR FICHIER et s’exécutera assez rapidement sur seulement 2 Go de données.