web-dev-qa-db-fra.com

la commande 'dd' prend-elle trop de temps?

J'ai configuré dd pour cloner un disque dur système plus petit (40,00 Go) (/ dev/sda) sur un nouveau disque dur plus grand de 111,00 Go connecté via un lecteur USB (dev/sdb). Le compteur d'activité du nouveau disque dur indique qu'il fait quelque chose. Mais le processeur n’est que d’environ 20%. Quand cette chose va-t-elle se terminer? Devrais-je recommencer le processus?

24
user101351

À l'avenir, vous devriez utiliser pv pour obtenir une barre de progression en cours d'exécution.

Sudo apt-get install pv

Avec pv, supposons que vous souhaitiez cloner un lecteur de 20 Go, /dev/foo, sur un autre lecteur (20 Go ou plus!), /dev/baz:

Sudo dd if=/dev/foo bs=4M | pv -s 20G | Sudo dd of=/dev/baz bs=4M

Points importants à noter: l'argument bs=4M définit la taille de bloc pour les opérations dd sur 4 Mo, ce qui considérablement améliore la vitesse d'exécution de l'ensemble. Et l'argument -s 20G indique à pv la taille prévue de cette opération. Elle peut donc vous donner un ETA ainsi qu'une vitesse actuelle.

J'aime pv si fort que cela devrait probablement être illégal.

56
Jim Salter

Vous pouvez voir jusqu'où il est allé en lui envoyant un signal SIGUSR1 afin de voir combien de données il a copiées et le taux de transfert:

kill -SIGUSR1 $(pidof dd)

Pour la copie, vous êtes limité par la vitesse d'E/S du périphérique. Le processeur ne doit donc pas être complètement chargé. Ne vous inquiétez pas.

24
Colin Ian King

J'ai utilisé pv aussi bien que (ps et kill) comme suggéré dans les autres réponses, mais plus récemment, je viens d'utiliser plutôt dc3dd qui produit les mêmes résultats tout en fournissant un rapport de progression tout au long du processus.

Vous pouvez vérifier s'il est déjà installé avec: which dc3dd

Sinon, vous pouvez l'installer avec Sudo apt-get install dc3dd

Les commandes sont similaires à dd (pour le clonage, bien que l’effacement soit un peu plus simple).

Dans votre cas, j'utiliserais la commande dc3dd if=/dev/sda of=/dev/sdb

Modifier:

Les versions récentes de dd à partir de paquet coreutils la version 8.24+ incluse dans Ubuntu 16.04 et les versions ultérieures incluent un paramètre status. Vous pouvez obtenir le même résultat avec dd en ajoutant le commutateur status=progress à votre ligne de commande dd.

Exemple: dd if=/dev/zero of=/dev/null count=1000 status=progress

7
Elder Geek

Vous pouvez utiliser ddrescue à la place:

Sudo ddrescue -v /dev/sda /dev/sdb

v signifie verbose.

0
atmelino

J'avais un problème similaire. La cause était différente dans mon cas.

Le lecteur cible est un disque dur externe.

Si le disque a été monté automatiquement via udisks et udisks-glue, le débit de transfert de cdrom vers le disque dur était d’environ 40 ko/s.

Lorsque j'ai démonté le disque dur et que je l'ai monté directement via mount, j'ai obtenu un taux de transfert d'environ 2,4 Mo/s.

0
Tobias