Un certain nombre de questions concernant les outils de clonage de disque dd
ont été suggérées au moins une fois. J'ai déjà envisagé de m'utiliser dd
moi-même, principalement pour sa facilité d'utilisation, et sa disponibilité sur pratiquement toutes les distributions Linux amorçables.
Quelle est la meilleure façon d'utiliser dd
pour cloner un disque? J'ai fait une recherche rapide sur Google et le premier résultat était une tentative apparemment infructueuse . Dois-je faire quelque chose après l’utilisation dd
, c’est-à-dire qu’il ne PEUT PAS être lu en utilisant dd
?
disk-image
dd
falstro
la source
la source
dd
options pour ignorer les blocs défectueux - ce qui est essentiel lors du clonage de disques à des fins de récupération. J'ai ajouté une meilleure réponse, qui peut cloner des disques ayant des blocs défectueux:dd if=/dev/sda of=/dev/sdb bs=4096 conv=sync,noerror
Réponses:
dd est très certainement le meilleur outil de clonage, il créera une réplique à 100% simplement en utilisant la commande suivante. Je n'ai jamais eu de problèmes avec ça.
Sachez que lors du clonage de chaque octet, vous ne devez pas l'utiliser sur un lecteur ou une partition en cours d'utilisation. En particulier, les applications telles que les bases de données ne peuvent pas très bien gérer cela et vous pourriez vous retrouver avec des données corrompues.
la source
dd if=/dev/sda | dd of=/dev/sdb
. Lors de mes tests, l'exécution de la commande sans le canal m'avait donné un débit de ~ 112 Ko / s. Avec le tuyau, j'ai eu ~ 235kb / s. Je n'ai jamais rencontré de problèmes avec cette méthode. Bonne chance!Pour économiser de l'espace, vous pouvez compresser les données produites par dd avec gzip, par exemple:
Vous pouvez restaurer votre disque avec:
Pour économiser encore plus d'espace, défragmentez le lecteur / partition que vous souhaitez cloner au préalable (le cas échéant), puis mettez à zéro tout l'espace inutilisé, facilitant ainsi la compression par gzip:
Attendez un peu, dd finira par échouer avec un message "disque plein", puis:
En outre, vous pouvez faire en sorte qu’un processus dd fonctionnant en arrière-plan indique l’état en lui envoyant un signal avec la commande kill, par exemple:
Vérifiez votre système - la commande ci-dessus concerne Linux, OSX et BSD Les commandes dd diffèrent par les signaux acceptés (OSX utilise
SIGINFO
- vous pouvez appuyer sur Ctrl+ Tpour signaler l’état).la source
kill -SIGUSR1 %1
, et la commande OSX dd accepte heureusement SIGUSR1 ... super utile, merci!Kill -SIGUSR1 1234
je cherchais ça.dd if=/dev/hdb | gzip -c > /image.img.gz
?ATTENTION : le fait de créer un système de fichiers actif peut corrompre les fichiers. La raison est simple, il ne comprend pas l'activité du système de fichiers qui peut se produire et ne tente pas de l'atténuer. Si une écriture est partiellement en cours, vous obtiendrez une écriture partielle. Ce n'est généralement pas bon pour les choses, et généralement fatal pour les bases de données. De plus, si vous bousillez la typo sujette si et des paramètres, malheur à vous. Dans la plupart des cas, rsync est un outil tout aussi efficace, conçu après l’avènement du multitâche et qui fournit des vues cohérentes de fichiers individuels.
Cependant, DD devrait capturer avec précision l'état du bit d'un lecteur non monté. Chargeurs de démarrage, volumes llvm, UUID de partition et étiquettes, etc. Assurez-vous simplement que vous disposez d'un lecteur capable de reproduire bit par bit le lecteur cible.
la source
sync
n’est pas la solution aux problèmes de corruption de fichiers. Que se passe-t-il si un démon ou quelque chose écrit plus de fichiers après lesync
, pendant l'dd
opération?rsync
garantira la cohérence des données internes du système de fichiers de destination. Cela ne garantira pas la cohérence des données dans les fichiers. Pour ce faire, vous devrez verrouiller les fichiers et tous les programmes qui écrivent dans les fichiers devront respecter ces verrous.Lorsque vous utilisez dd pour cloner un disque pouvant contenir des secteurs défectueux, utilisez "conv = noerror, sync" pour vous assurer qu'il ne s'arrête pas lorsqu'il rencontre une erreur et remplit le ou les secteurs manquants avec des octets nuls. C’est généralement la première étape que je fais si je tente de récupérer un disque en panne ou en panne: obtenez une copie avant toute tentative de récupération, puis effectuez la récupération sur le bon disque (cloné). Je laisse à l'outil de récupération le soin de gérer tous les secteurs vierges qui ne pourraient pas être copiés.
Vous pouvez également constater que la vitesse de dd peut être affectée par le paramètre bs (block size). J'ai l'habitude d'essayer bs = 32768, mais vous voudrez peut-être le tester sur vos propres systèmes pour voir ce qui fonctionne le plus rapidement pour vous. (Cela suppose que vous n'avez pas besoin d'utiliser une taille de bloc spécifique pour une autre raison, par exemple si vous écrivez sur une bande.)
la source
Pour cloner un disque, tout ce que vous avez à faire est de spécifier l'entrée et la sortie vers dd:
Bien sûr, assurez-vous que vous disposez des autorisations appropriées pour lire directement à partir de / dev / hdb (je vous recommande de l'exécuter en tant que root), et que / dev / hdb n'est pas monté (vous ne voulez pas copier lorsque le disque est en cours de modification - le montage en lecture seule est également acceptable). Une fois terminé, image.img sera un clone octet par octet du disque entier.
L'utilisation de dd pour cloner des disques présente quelques inconvénients. D'abord, dd copiera l'intégralité de votre disque, même de l'espace disponible, et si cela est fait sur un disque de grande taille, un fichier image extrêmement volumineux peut en résulter. Deuxièmement, dd ne fournit absolument aucune indication de progrès, ce qui peut être frustrant car la copie prend beaucoup de temps. Troisièmement, si vous copiez cette image sur d'autres lecteurs (encore une fois, à l'aide de dd), ils doivent être aussi grands ou plus grands que le disque d'origine. Cependant, vous ne pourrez utiliser aucun espace supplémentaire disponible sur le disque cible tant que vous ne l'utiliserez pas. redimensionnez vos partitions.
Vous pouvez également effectuer une copie directe de disque à disque:
mais vous êtes toujours soumis aux limitations ci-dessus concernant l'espace libre.
En ce qui concerne les problèmes ou les pièges, dd fait généralement un excellent travail. Cependant, il y a quelque temps, j'avais un disque dur sur le point de mourir et j'ai donc utilisé dd pour essayer de copier les informations que je pouvais obtenir avant de mourir complètement. On a alors appris que dd ne gérait pas très bien les erreurs de lecture - il y avait plusieurs secteurs sur le disque que dd ne pouvait pas lire, ce qui obligeait dd à abandonner et à arrêter la copie. À l’époque, je ne trouvais pas le moyen de dire à dd de continuer malgré une erreur de lecture (bien qu’il semble que ce paramètre existe), j’ai donc passé un peu de temps à spécifier manuellement skip et chercher à sauter par-dessus le sections illisibles.
J'ai passé un peu de temps à chercher des solutions à ce problème (une fois la tâche terminée) et j'ai trouvé un programme appelé ddrescue qui, selon le site, fonctionne comme dd mais continue de lire même s'il rencontre une erreur. Je n'ai jamais réellement utilisé le programme, mais cela vaut la peine d'être pris en compte, en particulier si le disque à partir duquel vous effectuez la copie est ancien, ce qui peut avoir des secteurs défectueux même si le système semble bien fonctionner.
la source
conv=sync,noerror
cela aiderait.conv=sync,noerror
options sont essentielles car elles permettent à dd d’ignorer les blocs défectueux et de les supprimer dans l’image afin que les éléments soient correctement alignés. Des accessoires pour les très rares personnes qui ont commenté quelque chose à ce sujet.ddrescue
fournit un indicateur de progression sans aucune option spéciale. Vous pouvez arrêter la copie et reprendre là où vous l'avez laissée.status=progress
Si le disque source est endommagé, vous aurez plus de chance
dd_rhelp
avecdd_rescue
(ma préférence personnelle) ou GNUddrescue
.La raison derrière ceci est que, sur les erreurs de lecture,
dd
continue d'essayer et d'essayer et d'essayer encore et encore - d'attendre potentiellement longtemps avant que les délais ne se produisent.dd_rescue
fait des choses intelligentes comme lire jusqu'à une erreur, puis choisir un emplacement plus loin sur le disque et lire à l'envers jusqu'à la dernière erreur. Ildd_rhelp
s'agit en fait d'undd_rescue
gestionnaire de session: ildd_rescue
lance et reprend intelligemment des cycles pour le rendre plus rapide encore.Le résultat final de
dd_rhelp
est le maximum de données récupérées en un minimum de temps. Si vous laissez endd_rhelp
cours d'exécution, il effectue exactement le même travail quedd
dans le même temps. Toutefois, si vousdd
rencontrez des erreurs de lecture au niveau de l'octet 100 de votre disque de 100 Go, vous devrez patienter longtemps pour récupérer les 9 999 999 autres octets *, alors quedd_rhelp
+dd_rescue
récupérerait le volume de données beaucoup plus rapidement.la source
Le disque source ne doit pas avoir de système de fichiers monté. En tant qu'utilisateur capable de lire le périphérique de bloc (la racine fonctionne), exécutez 'dd if = / dev / sda ....'
Une des choses intéressantes ici est que vous créez un flux d'octets ... et vous pouvez faire beaucoup avec ça: le compresser, l'envoyer sur le réseau, le réduire en blobs plus petits, etc.
Par exemple:
Mais plus puissamment:
L’image ci-dessus copie une image compressée du disque dur source sur un système distant, où elle est stockée sous forme de fragments 2G numérotés à l’aide du nom de l’hôte source tout en vous informant de la progression.
Notez que selon la taille du disque, la vitesse du processeur sur la source, la vitesse du processeur sur la destination, la vitesse du réseau, etc. Vous pouvez ignorer la compression, effectuez la compression côté distant ou activez la compression SSH.
la source
Pour cloner un disque, il vous suffit de spécifier l'entrée et la sortie
dd
:Bien sûr, assurez-vous que vous disposez des autorisations appropriées pour lire directement
/dev/hdb
(je vous recommande de l'exécuter en tant que root), et qui/dev/hdb
n'est pas monté (vous ne souhaitez pas copier pendant la modification du disque). Une fois terminé,hdb.img
sera un clone octet par octet de tout le disque.Il existe quelques inconvénients à utiliser
dd
pour cloner des disques. Tout d’abord,dd
copiez votre disque entier, même l’espace vide, et si vous le faites sur un disque de grande taille, un fichier image extrêmement volumineux peut en résulter. Deuxièmement, nedd
donne absolument aucune indication de progrès, ce qui peut être frustrant, car la copie prend beaucoup de temps. Troisièmement, si vous copiez cette image sur d'autres lecteurs (encore une fois, à l'aide de dd), ils doivent être aussi grands ou plus grands que le disque d'origine. Cependant, vous ne pourrez utiliser aucun espace supplémentaire disponible sur le disque cible tant que vous ne l'utiliserez pas. redimensionnez vos partitions.Vous pouvez également effectuer une copie directe de disque à disque:
mais vous êtes toujours soumis aux limitations ci-dessus concernant l'espace libre.
Le premier inconvénient peut être résolu en compressant les données au fur et à mesure que vous effectuez la copie. Par exemple:
Le deuxième inconvénient peut être résolu en utilisant l’
pv
outil pipeview ( ). Par exemple:Je ne connais aucun moyen de surmonter le troisième inconvénient.
De plus, vous pouvez accélérer le temps de copie en demandant
dd
de travailler avec de gros morceaux de données. Par exemple:la source
dd if=/dev/zero bs=1M of=/balloon; sync; rm /balloon
(Intelligence supplémentaire Modulo dans la couche système de fichiers.)Une autre bonne chose que vous pouvez faire avec les disques de secours et de secours est la copie de données sur le réseau:
Vous pouvez coller gzip dans ces deux pipelines si le réseau n’est pas local. Pour progresser, utilisez
pv
. Pour que netcat de local_machine soit arrêté une fois la copie terminée, vous pouvez ajouter-w 5
quelque chose.la source
> disk_backup.img
ou|dd of=/dev/sdb
ou quelque chose d'autre, en fonction de ce que vous voulez faire. Je suppose que vous ne voulez pas vider une image disque sur stdout.N'oubliez pas que dd en fait une copie exacte , y compris tout l'espace vide.
Cela signifie:
J'espère que c'est utile
la source
Pour référence future, consultez ddrescue . Cela a sauvé ma journée plusieurs fois.
la source
Une autre grande fonctionnalité est la copie des MBR, des tables de partition et des enregistrements de démarrage.
Juste
et l’autre direction lorsque vous l’écrivez. Polonais avec
fdisk
après.Vous vous sentez beaucoup plus en sécurité lorsque votre table de partition est sauvegardée.
En outre, la migration vers un autre disque dur (tout en modifiant la structure de la partition) devient un véritable plaisir.
la source
C'est un peu un bidouillage pas cher, mais c'est un moyen rapide et sale de surveiller votre processus de DD.
Exécutez votre commande dd. Ouvrez un nouveau shell et faites un ps awx pour trouver le PID de votre processus dd. Maintenant, dans le nouveau type de shell, surveillez -n 10 kill -USR1 {pid de votre processus DD}
Cela ne fera rien dans la fenêtre de sortie de la montre, mais dans le shell DD d'origine, DD commencera à générer des rapports d'état toutes les 10 secondes. Vous pouvez modifier le -n 10 dans la commande de surveillance à n’importe quel autre moment bien sûr.
Tachyon
la source
watch
disponible et-USR1
tue dd. La commande suivante fonctionne cependant:while [ true ]; do killall -INFO dd; sleep 30; done
pv
commande.Cela va copier le disque et ignorer les blocs avec des erreurs, ce qui est très important.
Ce sont les options de base essentielles pour utiliser dd pour cloner ou récupérer un disque.
Je ne voulais pas poster une autre réponse, mais il n'y avait pas de bonne réponse avec les options essentielles "conv = sync, noerror" parmi les 25 déjà postées.
la source
conv=sync,noerror
car cela évite de surcharger trop de données pour chaque bloc défectueux. Ces options sont essentielles pour le "clonage de récupération", et il est inutile de rechercher les commentaires. La réponse la plus courante est adéquate si les disques ne contiennent pas de blocs défectueux, par exemple pour cloner un disque vierge, mais pas pour la récupération.dd
exemples ici, tout en étant également approprié pour le clonage d'un disque exempt d'erreur. Par conséquent, j'estime que ma réponse est la meilleure ici sur la manière d'utiliser "DD pour le clonage de disque". Je n'ai pas ajouté d'informations sur le suivi des progrès, la compression, etc., parce que je voulais rester simple et me concentrer sur une réponse courte permettant de bien comprendre les bases.Vous pouvez réellement essayer quelque chose comme ça
ignorer toutes les erreurs et avoir le clone exact d'une partition ou d'un disque dur
la source
dd fournit des informations sur la progression - ainsi, la plupart des versions sous Linux. J'en ai vu qui ne le font pas mais ne se souviennent pas de la version Unix.
La page de manuel indique: L’envoi d’un signal USR1 à un processus 'dd' en cours d’impression lui permet d’imprimer les statistiques d’E / S sur erreur standard, puis de reprendre la copie.
J'utilise cette fonctionnalité régulièrement.
la source
Quelqu'un a dû dire ceci: essayez Clonezilla (http: // clonezilla.org/)
Qu'est ce que tu obtiens? Pour copier uniquement des parties utilisées du système de fichiers. Clonezilla utilise dd, grub, sfdisk, parted, partimage, ntfsclone et / ou partclone. Selon les options que vous choisissez.
Une documentation de qualité peut être trouvée sur: http: // clonezilla.org/clonezilla-live/doc/
la source
Comment copier en utilisant dd (dans ce cas sur une machine distante, mais le même principe s’applique à une copie locale) qui indique la progression.
Cela fonctionne en stockant le pid via le descripteur de fichier 3 dans / tmp / pid, qui est ensuite utilisé pour les destructions suivantes avec le signal USR1. Une ride devait filtrer la sortie de la progression sur stderr en une seule ligne via le filtrage de stderr à travers un sous-shell.
la source
La plupart des informations ont été décrites dans les recettes insérées précédemment, mais tout n'a pas été décrit.
Sous Linux, vous pouvez cloner le disque dur ou la partition à l'aide de la commande dd. Attention, quand vous faites une erreur, vous perdez toutes vos données.
Dans un premier temps, la destination ne doit pas être utilisée, d’autre part, la source ne doit pas être utilisée, ou remontée en lecture seule. Sinon, la copie sera endommagée. Si le remontage est impossible, veuillez créer un disque amorçable (hdd / ssd / pendrive) pour toute distribution live linux. Je prever knoppix, mais c'est votre choix. Si cela est possible, vous pouvez démarrer ou modifier le niveau du système en 1, pour le mode mono-utilisateur, ou vous pouvez directement redémarrer le système en mode mono-utilisateur, selon la distribution. Si vous ne clonez qu'une seule partition, cette partition doit être démontée ou remontée dans RO:
ou
Si vous voulez cloner l'intégralité du disque dur, vous devez démonter ou remonter toutes les partitions.
Vous devez identifier le périphérique source et le périphérique de destination. s'il vous plaît regardez le dmesg, ici sont stockées toutes les informations nécessaires sur le périphérique, avec le vendeur, etc. sinon l'identification peut être basée sur la taille du périphérique, si celle-ci est différente. Ensuite, la destination doit être identique ou supérieure à la source. vous devez calculer la source, par exemple: fdisk -l / dev / sda sauf la géométrie de la partition (il peut y avoir un GPT), vous obtiendrez: 1. la taille totale du disque wigh Go et les octets 2. la géométrie historique et le nombre total de secteurs, informations très importantes 3. la taille du bloc en octets, généralement 512.
par exemple:
Ensuite, essayons plus grand que 512 diviseur, nous avons 41943040 secteurs physiques:
41943040/256 = 163840, très bien, nous pouvons faire une copie en bloc de 256 secteurs. pouvons-nous plus? essayons: 41943040/1024 = 40960, je pense que cela suffit, nous allons sélectionner celui-ci. Comptons la taille du groupe de secteur: 512 (taille de secteur) * 1024 = 524288 octets eq 512K. Ensuite, nous pouvons utiliser le paramètre bs = 512K ou moins, mais diviser par 2 ^ x. Ceci est suffisamment pratique pour les disques durs modernes avec un cache interne important. pour les lecteurs plus anciens avec un cache beaucoup plus petit, une valeur de 32 Ko ou moins est suffisante.
Après la préparation, nous pouvons faire une copie: dd if = / dev / source_devide de = / dev / destination_device bs = 32K et la copie sera faite. Faites attention, toute erreur écrasera vos données d'importation et d'importation. Sur la destination tout sera écrasé.
Si vous essayez de récupérer des données sur un disque source endommagé, utilisez plutôt la taille du secteur natif (généralement 512 octets) et ajoutez l’option conv = notrunc. sinon, les trous dans les sources supprimés par les secteurs défectueux seront rejoints par les changements de secteur de destination. Cela endommagerait la copie avec peu de chance de réparation. alors la commande sera:
, et attendre longtemps quand le lecteur et le système abandonneront et marcheront secteur par secteur jusqu’au bout.
dd est un outil utile pour déplacer une partition dans un nouvel emplacement. Créez simplement une partition, créez une dd sur une nouvelle partition (cela peut être plus grand, beaucoup plus grand) et, si possible, développez le système de fichiers copié pour remplir toute nouvelle partition. Ext3 / ext4 / xfs / zfs / btrfs dispose de cette fonctionnalité. Enfin, vous devez modifier / etc / fstab, puis umount / mount si cela est possible, ou redémarrer le système.
Bien sûr, vous pouvez cloner n'importe quel type de partition. La commande dd ne s'intéresse pas au type de système de fichiers, elle ne fait rien avec sa structure. alors cette commande peut être utilisée pour cloner NTFS ou d'autres types de partition.
Il n'y a aucune astuce. Lorsque vous n'avez pas défini de paramètre, dd mettra la sortie dans sa sortie standard. alors vous pouvez faire une copie brute compressée du disque ou de la partition, par exemple:
Bien sûr, cela devrait être fait hors ligne. vous pouvez restaurer ceci en:
, alors tous les disques durs sda seront écrasés par cette sauvegarde et toutes les données actuelles seront perdues. Vous pouvez le faire aussi avec la partition Windows NTFS et le disque dur utilisé par cela. Bien sûr, vous pouvez utiliser une autre commande de compression, dépendant de votre choix.
la source
Vous pouvez créer un fichier image compressé de la partition (ou du disque) à la volée en utilisant
bzip2
ou à lagzip
place dedd
. C'est pratique pour stocker des images sur un support amovible:Si le disque a déjà été très utilisé, vous pouvez améliorer la compression en remplissant tout l'espace non utilisé par des zéros avant la création d'image:
Pour restaurer l'image sur un autre disque, il vous suffit de:
la source
Pour une raison quelconque, dd échoue lors de la création d'images de CD avec des pistes audio. Vous devez utiliser cdrdao ou quelque chose de similaire pour obtenir un fichier image + TOC.
la source
Une note sur la vitesse: dans mon expérience, dd est deux fois plus rapide si vous spécifiez bs = 1024 au lieu de la valeur par défaut bs = 512. L'utilisation d'une taille de bloc encore plus grande ne donne aucune accélération notable sur bs = 1024.
la source
Lorsque vous créez un disque complet, vous devez savoir que cela écrasera l'enregistrement de démarrage principal du disque récepteur. Ceci contient la table de partition et d'autres informations vitales. Si le nouveau disque n'est pas identique à l'ancien, cela peut créer toutes sortes de tables. La copie de partitions est généralement plus sûre (et les partitions swap ne doivent pas être copiées)
la source
Je n'ai plus le rôle d'administrateur depuis de nombreuses années, mais je sais que «dd» est à la hauteur. J'ai utilisé cette technique régulièrement à la fin des années 80 sur les ordinateurs Sun Sparc et 386i. J'ai passé une commande client sur 30 systèmes 386i exécutant un logiciel de CAO distribué sur plusieurs bandes QIC.
Nous avons installé le premier ordinateur, configuré l'application, lancé la commande sys-unconfig de SunOS, placé le lecteur dans une boîte à chaussures avec une adresse SCSI différente, puis passé à la définition "dd" des 30 autres lecteurs.
la source
Comme d'autres l'ont mentionné ci-dessus, l'un des pièges du clonage d'un système de fichiers monté est la corruption potentielle des données. Cela ne s'appliquera évidemment pas aux clones de lecteur complet, mais si vous utilisez LVM, vous pouvez capturer le LogicalVolume et le DD de l'instantané pour obtenir une image cohérente.
la source
Pour les volumes NTFS, je préfère utiliser ntfsclone . Cela fait partie du paquet ntfsprogs .
la source
Juste un avertissement pour les débutants qui doit être dit: au moins avec certaines versions, bs = X signifie que la mémoire à la taille de X sera littéralement allouée. bs = 2 Go sur un système doté de 1 Go de RAM et d’un échange insuffisant, cela provoquera des problèmes.
la source