web-dev-qa-db-fra.com

Comment puis-je savoir combien de temps le clonage `dd` prendra?

Je dois dd un couple de disques durs de 1 To. Ils prennent plusieurs heures à cloner et je me demandais s’il était possible de savoir à quelle vitesse ils allaient, combien ils avaient fait et combien de temps faudrait-il pour copier le reste.

Tout ce que je peux voir, c'est le terminal avec la commande en cours d'exécution. Quand j’exécute ps -e au moins, je sais que dd fonctionne à partir de l’utilisation du processeur indiquée, mais je n’ai aucun moyen de savoir ce qu’il a fait ou combien de temps il faudra pour le terminer.

Ça me rend fou.

24
Luis Alvarado

Utilisez le programme pvpour tout flux acheminé afin de voir un rapport en temps réel des données transférées. Il peut être utilisé pour toute application utilisant des tuyaux. C'est également un excellent outil pour voir le taux de transfert vers des éléments tels que l'USB, les disques externes et les ordinateurs en réseau.

dd if=infile | pv > outfile

Ou pour la copie directe, utilisez simplement ceci:

pv infile > outfile

Exemple:

Sudo pv /dev/sda1 > /home/user/sda1.ext4.img
21
Sepero

Typique. Quand je demande quelque chose, je trouve alors la réponse (même si je cherchais des heures .. mais comme par magie, je la trouve APRÈS avoir créé la question -.-). Quoi qu'il en soit, pour ce que j'ai vérifié avec dd --help qui mentionne à la fin de l'aide (je ne peux vraiment pas croire que je n'ai pas vu CELA), ce qui suit:

Sending a USR1 signal to a running `dd' process makes it
print I/O statistics to standard error and then resume copying.

   $ dd if=/dev/zero of=/dev/null& pid=$!
   $ kill -USR1 $pid; sleep 1; kill $pid
   18335302+0 records in
   18335302+0 records out
   9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s

Cela signifie que dans un autre terminal, vous exécuterez la ligne suivante à l'aide de l'ID de processus du DD que vous souhaitez vérifier. Par exemple, dans mon cas, l'ID de processus 4112. Vous pouvez voir l'ID de processus en tapant ps -e et en recherchant dd ou juste ps -e|grep dd et en regardant le numéro situé à l'avant. Prenez note de ce numéro, puis tapez dans une autre fenêtre de terminal kill -USR1 4112; sleep 1; Cela me donnera le temps, les secondes écoulées depuis le début et le nombre de copies. Au moins, maintenant, je sais qu'il faut environ 8 heures pour copier 1 To d'informations à environ 40 Mo/s.

29
Luis Alvarado

Concernant l'utilisation de kill pour afficher des informations sur un Mac, vous devez lui passer l'indicateur -INFO à la place de l'indicateur -USR1. Et rappelez-vous qu’il affiche les informations dans le terminal où votre processus dd est en cours d’exécution. Par conséquent, si vous ouvrez un nouvel onglet pour saisir kill -INFO $PID (où $PID est le numéro trouvé à l’aide de ps -e | grep dd), vous devrez revenir à l’onglet où dd est en cours d'exécution pour afficher le résultat.

Maintenant, si seulement je pouvais comprendre comment afficher cette sortie en Go ou en Mo au lieu d'octets en clair ...

10
bobo

Il existe déjà un autre dd étendu appelé dcfldd qui contient de nombreuses choses amusantes pour lesquelles vous demandez http://dcfldd.sourceforge.net/

  1. Sudo apt-get install dcfldd
  2. Au lieu de dd, vous écrivez dcfldd
4
TheNano