utiliser dd pour copier la partition sur une autre partition, tout en utilisant un disque physique

17

Je ne sais pas comment mieux expliquer cela dans le sujet, donc la "question" peut ne pas être correcte. Mais voilà. J'ai trois disques durs. Le lecteur A est un lecteur de 320 Go, le lecteur B est un lecteur de 80 Go et le lecteur C est un lecteur de 1 To. J'ai copié les données du lecteur de 80 Go sur le lecteur de 1 To, et je vais redimensionner la partition (afin que je puisse copier les données du lecteur de 320 Go par la suite).

Ma question est la suivante: si je démarre dans le système d'exploitation sur le lecteur 1 To, puis-je utiliser dd pour copier le lecteur de 320 Go sur une autre partition sur ce lecteur physique? Je sais que je ne devrais pas copier une partition en direct (ce qui signifie que je ne pourrais pas copier les données du lecteur de 320 Go si j'utilise ce système d'exploitation).

Mon raisonnement est le suivant: j'ai essayé d'utiliser Acronis TrueImage, Partition Manager et Image 4 DOS / Linux (les deux applications), et cela allait prendre plus d'une semaine pour copier les données. Cela signifie que pendant une semaine, je ne suis pas en mesure d'utiliser l'ordinateur, ce qui n'est pas acceptable (sauf si c'est ma seule option). J'espère que cela fonctionne, donc je peux au moins utiliser l'ordinateur pendant que je fais la copie.

Si je le dois, je peux soit démarrer sur un Live CD (ce n'est pas vraiment une option préférée) ou utiliser "Drive B", mais je voudrais retirer ce lecteur dès que possible.

Der Hochstapler
la source
Bien sûr, pourquoi pas ?
Michael Hampton

Réponses:

18

Oui, ce que vous voulez faire fonctionnera bien, étant donné que les deux conditions suivantes sont remplies:

  1. Il n'y a pas de système de fichiers (monté) sur la partition que vous dd'ing à .
  2. La partition que vous dd'ing à au moins la même taille que celui que vous dd'ing de (c. -à- 320 Go).

La raison pour laquelle cela fonctionnera correctement est que les partitions ne sont que des fichiers sous UNIX. Leur contenu n'a une signification particulière que s'il contient un système de fichiers monté.

En supposant que vous ayez une disposition qui ressemble à ceci:

1 To = sda, deux partitions, sda1 à partir de laquelle vous avez démarré et sda2 vers lequel vous effectuez

320 Go = sdb, une partition, sdb1 à partir de laquelle vous faites

Votre commande ressemblerait à ceci:

dd if=/dev/sdb1 of=/dev/sda2 bs=1M

Le bs=1Mparamètre est là pour garantir que dd copie les données en gros morceaux au lieu d'émettre une demande pour chaque secteur.

Michael Fenn
la source
1
si = source de = destination je pense qu'il y a quelque chose qui ne va pas dans les conseils ci-dessus.
Dans l'exemple ci-dessus, sdb1 est la source et sda2 est la destination. J'ai modifié la réponse pour être plus clair à ce sujet.
Michael Fenn
1
Pas besoin d'effectuer resize2fsaprès la copie? Même lorsque les tailles sont différentes?
Sopalajo de Arrierez
5

En général, c'est ok pour dd n'importe quelle partition alors qu'elle n'est pas montée. Si vous devez monter la partition source pour la lecture pendant l'exécution du dd, il serait préférable de la monter en lecture seule avec le paramètre -o ro.

si vous voulez d'abord démarrer dans la partition source amd puis utiliser dd pour la copier, vous pouvez faire le montage -o ro, remonter / pour le faire lire uniquement après le démarrage.

rejouer
la source
La lecture seule ne signifie pas que le système de fichiers ne joue pas avec le journal ou ne réorganise pas l'espace libre ou autre.
vonbrand
@vonbrand pourriez-vous fournir un exemple d'implémentation de système de fichiers Linux qui le fait en mode RO?
Basilevs
@vonbrand Dans les systèmes de fichiers UNIX, être montés ro très bien ne signifie pas qu'aucun écrit ne devrait être délivré au dispositif sous - jacent.
Michael Fenn