Comment puis-je utiliser DD pour migrer des données d'un ancien disque vers un nouveau disque?

29

Je mets à niveau le disque dur SATA interne de mon ordinateur portable d'un disque 40G à un disque 160G. J'ai un bureau Linux / Ubuntu qui a une carte SATA. J'aimerais en fait faire la même chose pour quelques boîtiers CentOS et FreeBSD au travail, et il semble que cela aurait la même solution.

J'ai entendu dire que je peux utiliser DD pour mettre en miroir la partition 40G sur le lecteur 160G, ou que je peux enregistrer la partition 40G en tant qu'image sur mon système local, puis copier cette image 40G sur le lecteur 160G.

Quelqu'un peut-il décrire comment je peux faire cela? Ai-je besoin d'autres utilitaires, tels que gparted

Stefan Lasiewski
la source
3
Ahha ... C'est la première question !!
Harshit Shrivastava
2
Question numéro un! Je suis également l'auteur de ce site, et j'ai pensé lancer le site avec une question assez technique. J'ai été récompensé avec un T-shirt et du swag.
Stefan Lasiewski

Réponses:

6

Votre première tâche serait de connecter les deux disques à un système Linux existant ou de connecter le nouveau disque au système d'origine.

Vous devez être très prudent car il est très simple de copier le disque vierge sur le bon disque!

Pour finir avec les secteurs de démarrage et tout, vous feriez quelque chose comme:

dd if=/dev/hdx of=/dev/hdy

Où se hdxtrouve votre disque 40G et hdyvotre disque 160G. Vous remarquerez qu'il n'y a pas de numéros de partition comme /dev/hdx1. Cela copie l'intégralité du disque, les informations de partition et tout.

Votre nouveau disque ressemblera à l'ancien disque alloué à 40 Go. Il devrait démarrer immédiatement lorsqu'il est replacé dans votre ordinateur portable. J'espère que vous avez utilisé LVM? Sinon j'espère que vous n'avez pas utilisé toutes les partitions? Dépasser ce point nécessite beaucoup plus d'informations.

Une autre solution consiste à vider chaque partition individuelle. Cela nécessite beaucoup plus de connaissance de la situation, car vous devrez recréer les informations de démarrage.

Tout cela est mieux utilisé pour cloner des ordinateurs, pas pour mettre à niveau des disques durs. Il est préférable de restaurer une nouvelle installation à l'aide de vos sauvegardes.

Stephen Jazdzewski
la source
17

Normalement, je suggérerais une solution telle que «brancher le 2ème disque dur à l'aide d'un boîtier externe, démarrer à partir d'un CD Linux, puis utiliser une commande telle que dd if=/dev/sda of=/dev/sdb bs=1G, mais puisque vous voulez utiliser la même technique pour le travail, j'ai ce qui peut être une meilleure solution.

Tous mes serveurs et ordinateurs portables sont imagés au travail à l'aide de Clonezilla . Il y a deux façons de l'utiliser ... dont l'une utilise un serveur dédié et est probablement exagérée pour vous, et une autre qui utilise un CD de démarrage et un disque dur externe.

L'idée est que vous démarriez avec le CD Clonezilla et que vous disposiez d'un lecteur USB externe plus large (plus grand que le lecteur source). Clonezilla vous guide à travers la création d'une image du lecteur existant, après quoi vous éteignez la machine, remplacez le lecteur, puis redémarrez dans Clonezilla, et il vous guide à travers la restauration des données.

Cela vous donne la possibilité de A) mettre l'image sur un disque plus grand et B) conserver une sauvegarde des données.

Matt Simmons
la source
5

Bien que vous puissiez utiliser dd pour copier un disque comme celui-ci, cela présente un certain nombre d'inconvénients:

  1. La destination doit être exactement de la même taille ou plus grande que la source
  2. Après la copie, vous devrez redimensionner les partitions pour utiliser tout espace supplémentaire
  3. Vous perdrez du temps à copier de l'espace libre
  4. Toute fragmentation présente sur l'ancien disque est conservée

L'utilisation d'un programme d'imagerie comme Ghost4Linux, partclone ou clonezilla prend au moins en charge les numéros 2 et 3. Vous pouvez également formater simplement le nouveau disque, le monter et copier tous les fichiers avec cp -ax(en tant que root), puis réinstaller le chargeur de démarrage sur le nouveau lecteur. Cette méthode ne souffre d'aucun des inconvénients ci-dessus.

psusi
la source
3

Pour copier simplement la partition, vous pouvez utiliser dd if=/dev/srcDrive of=/dev/dstDriveou quelque chose comme ça. Je vous recommande de lire sa page de manuel . Désolé, je ne peux pas donner beaucoup plus d'informations, car je suis au travail en ce moment ..

Berne
la source
2

Vous avez demandé comment le faire avec dd, mais j'ai mieux réussi à canaliser la sortie de la sauvegarde vers la restauration . Étant donné l' ad1s1a source et l' ad2s1a cible :

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

J'ai essayé ceci sur FreeBSD, en fait je l'ai trouvé sur le forum FreeBSD

zvolkov
la source
1

Un exemple simple est le suivant:

dd if=/dev/sda of=/dev/sdb

Mais si vous avez des besoins particuliers, vous devriez vraiment lire la page de manuel (man dd) ou effectuer une recherche sur Google.

Une autre idée pourrait être l'utilisation de rsync (n'oubliez pas de définir les bonnes options, comme -az [empaquette les fichiers au lieu de copier un fichier après l'autre] ou --numeric-ids [utilise l'uid / gid au lieu de noms comme "root"] et peut-être quelques autres). Le lien contient de nombreux exemples.

Si le nouveau disque dur n'a pas de partitions, vous pouvez utiliser gparted ou palimpset.

Lorsque vous n'êtes pas sûr, je formaterais le disque dur, puis synchroniserais les données avec rsync.

fwaechter
la source
1

Eh bien, j'ai fait des migrations similaires à cela en démarrant avec les deux disques connectés et un Live CD.

  1. Vous recréez les informations de partition du premier disque dans le second, en agrandissant éventuellement certaines partitions pour utiliser l'espace supplémentaire, etc.
  2. Supposons alors que vous ayez / dev / sda {1,2,3,4} et que vous vouliez les copier dans / dev / sdb {1,2,3,4}, vous mkdir / mnt / sd {a, b} {1 , 2,3,4} et montez chaque partition dans chaque répertoire (ou si vous voulez le faire une par une, vous pouvez créer un / mnt / origin / mnt / destination et monter / démonter chaque paire)
  3. Ensuite, vous faites un cp -avr / mnt / origin /. / mnt / destination / (ou un cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. Attendez pendant que vous naviguez sur le Web :)
  5. N'oubliez pas de réinstaller grub, lilo ou le gestionnaire de démarrage que vous utilisez.

En procédant de cette façon, vous défragmenterez les fichiers au fur et à mesure de leur copie, vous pouvez également changer les systèmes de fichiers dans les partitions (migrer de reiserfs ou ext3 vers ext4, etc.), mais n'oubliez pas de modifier / etc / fstab après avoir copié à votre convenance la nouvelle situation.

Jorge Nerín
la source