peut-on utiliser 'dd' pour cloner un disque dur plus petit, sachant que les partitions devront être éditées?

12

J'ai utilisé dd pour cloner des disques comme ceci:

 dd if=/dev/sdb of=/dev/sda bs=4096 conv=notrunc,noerror,sync

Et ça a toujours bien fonctionné. Tous les documents sur 'dd' s'efforcent de vous rappeler que le disque cible doit avoir la même taille ou une taille supérieure à celle du disque source. Cela doit-il absolument être vrai?

Maintenant, je comprends tout à fait que si je clone sur un disque plus petit, je ne peux pas espérer que des partitions même partiellement "hors limites" sur la cible soient intactes.

Cependant, sachant très bien que je devrais éditer mes partitions sur la cible plus tard, en supprimant celles "hors limites", pourrais-je toujours utiliser "dd" pour créer une copie brutale de la source jusqu'au limites de la taille physique de la cible? Ou bien 'dd' réduirait la cible à une pile de débris fumant lorsqu'elle atteignait la limite de sa taille; -)

BTW, en recherchant cela, j'ai vu les valeurs recommandées pour bs= de tout, de bs=1024 à bs=32M , quel est vraiment le meilleur?

    
posée Ray Andrews 13.10.2014 - 18:16
la source

4 réponses

6

Le disque physique ne devrait pas commencer à fumer, du moins, mais il y a de strongs chances que votre système de fichiers ne fonctionne plus (je veux dire, le système de fichiers cible; si vous venez de copier et de ne toucher à rien dans la source, la source elle-même devrait être bon). Les données à l'intérieur d'une partition ne sont pas nécessairement allouées par ordre croissant. Une partie peut être à la fin de la partition même si la partition n'est pas pleine (en fait, je pense que cela se produit de manière déterministe avec certains systèmes de fichiers, mais je ne sais pas assez pour entrer dans les détails). Les données qui y figurent peuvent être essentielles à l’intégrité du système de fichiers. Je vous conseille donc strongment de ne pas vous fier à une telle copie.

Si vous voulez faire cette copie, vous devez d’abord réduire la partition avec un outil conscient de sa structure interne et capable de tout remapper correctement dans une partition plus petite. Ensuite, vous pouvez faire la copie. gparted est une bonne interface graphique pour faire ce genre de choses.

Pour la valeur bs , la meilleure idée est généralement de faire quelques tests avant de commencer la copie réelle. Certains outils vous aident à automatiser cette vérification, mais je ne me souviens pas de son nom. D'après mon expérience, la meilleure fourchette se situe généralement entre 4 et 16 millions de personnes. Plus haut que cela, vous ne gagnez plus beaucoup. Mais cela dépend de beaucoup de choses, y compris les disques eux-mêmes. Par exemple, j’ai rarement travaillé avec de vrais disques haut de gamme, ce qui peut convenir à des valeurs plus élevées en raison de la vitesse et de la taille du cache supérieures.

MODIFIER si une partition est entièrement copiée, vous pouvez l'utiliser sans problème. Cependant, comme d'autres l'ont souligné, vous devez également vous assurer que la table de partition est intacte (au moins les entrées correspondantes). Avec les quatre partitions principales du MBR, il n'y a pas de problèmes, puisqu'elles sont décrites dans les 512 premiers octets du disque. Les partitions logiques étant décrites tout au long de la partition étendue, des entrées peuvent être perdues (mais elles décrivent des partitions qui seraient perdues de toute façon). Avec GPT, il existe une copie de la table de partition au début et à la fin du disque. Vous perdez le second, mais vous pouvez le reconstruire à partir du premier. Bien sûr, il est conseillé de le faire dès que possible. les autres réponses étaient plus précises à cet égard.

    
réponse donnée 13.10.2014 - 18:33
la source
1

Même si, au départ, le "défi" proposé peut sembler difficile, irréaliste ou naïf, comme certains l’ont dit, ce n’est pas le cas. L'idée principale derrière l'utilisation de dd pour migrer d'un disque plus grand à un disque plus petit convient parfaitement et présente des avantages pour la migration des données. Bien entendu, disposer de suffisamment d’espace libre pour pouvoir insérer les données occupées dans le disque de destination est une nécessité.

L’idée est de penser à modifier chaque partition individuellement et non le disque entier à la fois comme proposé initialement. Encore plus peut être accompli: les partitions qui seraient tronquées peuvent également être migrées en toute sécurité avec un peu d'aide des outils de redimensionnement du système de fichiers. En effet, ce type de migration est intéressant pour préserver les matadata et les attributs de fichiers étendus du système de fichiers qui ne peuvent pas être facilement copiés avec des outils tels que cp, rsync, pax, ... qui fonctionnent dans la couche système de fichiers et non pas la couche périphérique. Utiliser dd élimine le besoin de réinstaller le système d’exploitation ou de devoir ré-étiqueter le FS afin d’éviter les problèmes avec SELinux.

Voici ce que je fais habituellement pour accomplir des tâches similaires:

1) Vous devez d’abord réduire le (s) système (s) de fichiers dans les partitions affectées qui seraient tronquées. Pour cela, utilisez l’outil resize2fs (en supposant qu’il s’agisse d’un fichier ext2 / ext3 / ext4 fs - d’autres FS modernes disposent également d’outils de redimensionnement conçus dans le même but). Notez que même si - pour des raisons évidentes - un système de fichiers ne peut pas être plus gros que la partition dans laquelle il réside, il peut être sans danger plus petit. Le truc de la sécurité est de réduire "plus que nécessaire". Par exemple, imaginons que vous souhaitiez migrer vers un lecteur de 500 gigaoctets avec un système de fichiers de 1 To. Dans ce cas, je suggère de réduire le fs à, par exemple, 450 Go (vous devez disposer d’un espace libre suffisant pour cela, bien entendu, c’est-à-dire que l’espace actuellement occupé dans ce système de fichiers ne peut pas dépasser 450 Go). La perte apparente de 50 Go d’espace sera réparée après la migration des données.

2) Partitionnez le disque de destination avec la géométrie appropriée en tenant compte de ses contraintes d'espace;

3) dd les données en utilisant le (s) périphérique (s) de partition et non le périphérique de disque (c.-à-d. utilisez dd if=/dev/sda# of=/dev/sdb# pour chaque partition au lieu d’utiliser if=/dev/sda of=/dev/sdb ). REMARQUE: sda et sdb ne sont que des exemples. REMARQUE IMPORTANTE: lors du passage d'une unité de partition plus grande à une unité de partition plus petite, dd se plaindra d'avoir tenté d'écrire une publication à la fin du périphérique de bloc. Les données du système de fichiers auraient été entièrement copiées avant d'atteindre ce point. Pour éviter un tel message d'erreur, vous pouvez spécifier la taille de la copie à l'aide des paramètres bs= et count= correspondant à la taille réduite du système de fichiers, mais cela nécessitera un calcul (simple), mais si cela est mal effectué, vous risqueriez de perdre vos données.

4) Une fois les données supprimées, redimensionnez le ou les systèmes de fichiers respectifs dans la ou les partitions de destination à l'aide de resize2fs. Cette fois, ne spécifiez pas la nouvelle taille du système de fichiers. Lorsque resize2fs est exécuté sans spécification de taille, le système de fichiers se développe de sorte qu'il occupe la taille maximale autorisée. Ainsi, dans ce cas, le système de fichiers de 450 Go augmentera pour occuper la totalité de la partition de 500 Go et aucun octet ne sera perdu. (L’approche "réduire plus que nécessaire" vous évite de spécifier accidentellement des tailles erronées et de compromettre vos données. Notez que les unités GB vs GiB peuvent être délicates).

Remarque pour les opérations plus complexes: si vous avez l'intention de copier avec un gestionnaire de démarrage, ce qui est très probablement le cas, vous pouvez dd les quelques premiers Ko du disque en utilisant le périphérique de disque au lieu des périphériques de partition. (comme dd if=/dev/sda of=/dev/sdb bs=4096 count=5 ), puis reconfigurez la géométrie dans / dev / sdb (qui contiendra temporairement une géométrie non valide pour le nouveau lecteur mais un gestionnaire de démarrage intact et valide). Enfin, utilisez les périphériques de partition décrits ci-dessus pour créer une partition à la fois. J'ai fait des opérations comme celle-ci plusieurs fois. Récemment, j’ai effectué avec succès une migration complexe lors de la mise à niveau à partir d’un disque dur contenant un mélange de MacOSX & Les installations Linux sur un SDD plus petit dans mon MacMini6,2. Dans ce cas, je devais démarrer Linux à partir d'un lecteur externe, le gestionnaire de démarrage, exécuter gdisk pour corriger le GPT dans le nouveau disque, et enfin terminer chaque partition contenant les systèmes de fichiers simplement rétrécis. (Notez que le schéma de partition GPT conserve deux copies de la table de partition, une au début et une autre à la fin du disque. Gdisk se plaint beaucoup car il ne trouve pas la seconde copie du PT et parce que les partitions dépassent la taille du disque. , mais cela corrige correctement le problème de copie du PT après avoir redéfini la géométrie du disque). C’était un cas beaucoup plus complexe, mais qui mérite d’être mentionné car il montre que ce type d’opération est également parfaitement réalisable.

Bonne chance! ... et surtout, n'oubliez pas de sauvegarder toutes les données importantes avant ce type d'opération. Une erreur et vous pouvez certainement endommager irrémédiablement vos données.

Et juste au cas où je n'insisterais pas assez sur moi, sauvegardez vos données avant la migration! :)

    
réponse donnée 14.10.2014 - 04:17
la source
0

Si vous souhaitez installer une voiture dans un passage moins large de 20 cm que la voiture et que vous avez coupé la gauche de la voiture à 20 cm, la voiture fonctionnera-t-elle encore? Probablement pas.

Si vous copiez le début d'un disque sur un autre disque et coupez la copie parce que le disque cible est plus petit, le résultat ne fonctionnera pas. Même s'il y aurait suffisamment d'espace pour contenir tous les fichiers sur le disque cible, couper après N octets au début du disque ne vous donnera pas un système de fichiers fonctionnel.

Si le disque est divisé en partitions de type PC (GPT ou MBR), toutes les partitions qui entrent entièrement dans la cible fonctionneront. Il existe une exception: avec les partitions MBR, si les partitions logiques ne sont pas numérotées dans l'ordre des disques, dès que la chaîne quitte la zone cible, les partitions ne sont plus répertoriées. (Si vous ne comprenez pas cela, c’est une raison de plus de ne pas faire une copie partielle du disque.) Il serait beaucoup plus logique de copier les partitions que vous voulez conserver, au lieu de les copier depuis le début et de les finir comme bon vous semble. . La partition partiellement copiée à la fin ne sera pas utilisable.

Si le disque ou une partition partielle est un volume physique LVM et que vous effectuez une copie partielle de ce volume physique, vous ne pouvez pas non plus être sûr d'obtenir des données utiles du résultat.

Si vous souhaitez copier uniquement certaines des données d'un disque volumineux sur un disque plus petit, créez des partitions sur le disque plus petit. Si vous souhaitez copier une partition sur une partition de même taille, vous pouvez le faire avec cat . Si vous souhaitez copier une partition sur une partition plus petite, créez un système de fichiers sur la partition cible et effectuez une copie au niveau du fichier avec quelque chose comme cp -a ou pax -rw -pe -t .

Vous pouvez utiliser dd au lieu de cat si vous êtes masochiste. dd a une syntaxe étrange et a pour valeur généralement plus lent que cat à moins que vous ne trouviez la bonne taille de mémoire tampon. Il n'y a pas de valeur optimale unique pour la taille de la mémoire tampon, cela dépend des caractéristiques de votre matériel. Si la taille est trop petite, dd perdra du temps à effectuer de nombreux petits transferts. Si la taille est trop grande, dd perdra du temps à lire complètement un tampon avant de commencer à écrire le suivant. La taille optimale pour un transfert de disque à disque est généralement de quelques mégaoctets (1024 octets est ridiculement petit). cat choisira une taille correcte sans effort de votre part.

    
réponse donnée 14.10.2014 - 02:12
la source
0

Je voudrais partager mon expérience de ce sujet, si cela devait être utile à un autre lecteur. Récemment, j’ai utilisé DDRESCUE pour récupérer le premier tiers d’une partition NTFS d’un disque dur défectueux et pour reconstruire avec succès le segment récupéré de la partition sur un disque dur plus petit, sauvant ainsi les fichiers capturés (et perdre le reste). Voici les étapes que j'ai suivies en faisant (définitivement une approche HACKSAW !!) ...

Le disque dur source était constitué de 750 Go formaté en NTFS avec un fichier MBR. Je ne l'avais utilisé que quelques fois pour sauvegarder des fichiers; la plupart des fichiers se trouvaient donc au début du lecteur, soit environ 160 Go. Un membre de la famille a fait tomber le disque dur (monté à l'extérieur) sur le sol - il n'a plus fonctionné correctement après cela! En utilisant ddrescue (minutieusement), j’ai pu récupérer une grande partie du début du disque. En raison des dégâts matériels, il s’est arrêté très fréquemment tout au long du processus ...

J'avais un petit disque dur d'ordinateur portable disponible de 150 Go (monté à l'extérieur), auquel j'ai extrait les données ddrescue directement. Sinon, j’aurais pu extraire les données dans un fichier image et, plus tard, monter le fichier, mais j’ai pensé que l’écriture directe des données sur un disque dur était plus directe.

La clé du problème était de modifier manuellement les données du MBR et du secteur de démarrage NTFS sur le disque dur de secours. Sans cela, le disque dur n'est reconnu par aucun système d'exploitation. Je ne pouvais pas trouver un programme approprié sous Linux pour le faire, alors je me suis tourné vers Windows. Il existe un paquet pratique appelé Outils de support Windows, qui n'est plus mis à jour mais qui reste utile (voir lien ci-dessous)! L'outil que j'ai utilisé pour éditer la partition est Disk Probe. Assurez-vous de connaître la valeur du secteur final de votre disque dur (j’ai utilisé fdisk -l dans Ubuntu)

lien

À l'aide d'une bonne calculatrice et d'un peu de créativité, j'ai chargé et monté le disque dur dans Disk Probe sous Windows et modifié les valeurs du secteur final. Dans le MBR, deux ensembles de valeurs ont dû être modifiés, à savoir a) le secteur final du disque dur et b) le secteur final de la partition NTFS. Dans le secteur de démarrage NTFS, la valeur du total des secteurs de la partition devait être modifiée. Dans chaque cas, la valeur numérique a été réduite afin de correspondre à la "dimension" réduite du disque dur le plus petit (secteurs d'extrémité modifiés de 750 Go à 150 Go). Cliquez sur l'onglet Afficher pour modifier ces valeurs.

Voici une image de Disk Probe en action modifiant les données du secteur de démarrage NTFS

Lors de la modification des champs susmentionnés, Windows a reconnu la partition comme étant une partition valide, bien qu’elle ait été endommagée. Je suis entré dans l'invite de commande et j'ai exécuté le programme Windows Chkdsk sur le disque dur endommagé (chdsk D :). C'était palpitant de voir la partition revenir à la vie, fichier par fichier! Le programme a reconstruit la table de partition et remappé avec succès tous les fichiers copiés à partir du disque dur endommagé. Les fichiers hors de portée (non copiés) n'ont pas été trouvés et ont donc été éliminés.

La partie suivante dont je ne comprends pas la raison, Windows reconstruisant avec succès le disque dur de 150 Go avec les fichiers inclus. Néanmoins, Windows n’a pas été en mesure d’ouvrir la partition du disque dur pour visualiser les fichiers (une erreur s’est produite). Cependant Ubuntu à la rescousse! J'ai redémarré Ubuntu, monté le disque dur externe et, sans aucun problème, tous les fichiers récupérés sont apparus!

Espérons que cette méthode de récupération des fichiers d'un disque dur volumineux sur un disque dur plus petit par une scie à métaux s'avérera utile pour une âme pauvre en plus de moi. À la vôtre!

    
réponse donnée 26.02.2018 - 02:40
la source

Lire d'autres questions sur les étiquettes