# DD : récupérer l'avancement

**URL:** <https://www.debian-fr.org/t/dd-recuperer-lavancement/79639>\
**Category:** Programmation\
**Created:** [Juillet 13, 2019, 10:20 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639 "2019-07-13T22:20:52Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Juillet 13, 2019, 10:20 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/1 "2019-07-13T22:20:52Z")

</div>

Hello à toutes et tous,

Je cherche une méthode pour récupérer l’avancement lorsque je fais un DD.

C’est à dire, ne pas suivre en direct ( comme le propose l’option status=progress),  
mais récupérer l’état d’avancement dans un fichier texte par exemple.

J’arrive à le faire lorsque je décompresse une archive :

```
#fichier maj
if sudo 7z l $maj_fichier_full_rar | grep $maj_fichier_full_name ;then
	echo "ok"
else
	sudo rm -rf /StockImg/*
	return_result "Contenu archive incorrecte// MAJ PATCH"
	return 2
fi
	#fichier version
if sudo 7z l $maj_fichier_full_rar | grep $maj_scriptversion_name ;then
	echo "ok"
else
	sudo rm -rf /StockImg/*
	return_result "Contenu archive incorrecte// MAJ PATCH"
	return 2
fi
sleep 3

echo "Commencer extraction"
sudo python $lcd_maj_suivi "full" "Extraction maj" "non"
sleep 3

taille_finale=$(sudo 7z l $maj_fichier_full_rar | sudo grep $maj_fichier_full_name | sudo tr -s ' ' ';' | sudo cut -d';' -f4 )
echo $taille_finale

taille_intermediaire=1
echo $taille_intermediaire

sudo 7z x $maj_fichier_full_rar | while [$taille_finale -ne $taille_intermediaire] ;do
	if [-f $maj_fichier_full];then
		taille_existant=$(du -b $maj_fichier_full | awk '{ print $1 }')
		taille_intermediaire=$taille_existant
		
		taille_tempsreel=$(($taille_existant*100/$taille_finale))"%"
		sudo python $lcd_maj_suivi "full" $taille_tempsreel "oui"
		
		echo $taille_finale
		echo $taille_existant
		echo $taille_tempsreel
	else
		((taille_intermediaire++))
	fi
done

```

Quelque-chose de ce genre là 🙂

C’est pour permettre de diffuser l’information sur mon écran, monté sur les GPIO.  
Je récupère cette information pour la passer dans mon script python.

Merci par avance 🙂

---

<div class="post-metadata">

**Author:** ![Albert](https://www.debian-fr.org/user_avatar/www.debian-fr.org/albert/32/8474_2.png) [@Albert](https://www.debian-fr.org/u/Albert)\
**Post date:** [Juillet 13, 2019, 10:48 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/2 "2019-07-13T22:48:50Z")

</div>

Bonjour,  
Je ne suis pas un spécialiste des scripts, mais en faisant un df sur la cible tu pourrais, peut-être, avoir un truc…

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Juillet 14, 2019, 6:01 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/3 "2019-07-14T06:01:46Z")

</div>

Bonjour

> [@domoticity](#):
>
> …récupérer l’avancement lorsque je fais un DD.…

L’option **status=progress** de la commande `dd`  
permet d’afficher quelques informations  
en cours de création du fichier de sortie :

```plaintext
root@debg53sw:~# dd if=/dev/sdb of=fichierImageSdb.img bs=4096 status=progress
40882176 bytes (41 MB, 39 MiB) copied, 4,0006 s, 10,2 MB/s

root@debg53sw:~# 

```

* * *

Une autre solution consiste à  
installer le paquetage nommé [**pv**](https://packages.debian.org/fr/buster/pv)

Ci-dessous, un exemple de ligne de commandes utilisant `pv`  
qui affiche une barre de progression  
pendant la création par `dd` du fichier image de ma clef USB

```plaintext
root@debg53sw:~# pv -tpreb /dev/sdb | dd of=clefUsb4GB.img bs=4096 
1,21GiO 0:03:16 [3,55MiB/s] [================>] 31% ETA 0:07:03

```

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Juillet 14, 2019, 9:35 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/4 "2019-07-14T09:35:33Z")

</div>

Pour pouvoir récupérer l’avancement à un instant donné, sans le suivre en temps réel, je pense que je bricolerais quelque chose utilisant `stat`, `du`, `ls` ou un autre outil dans ce style pour comparer la taille de la source et celle de la destination.

Pour obtenir la taille en octets d’un fichier :

```auto
stat --format='%s' $fichier

```

```auto
du --bytes $fichier | cut --fields=1

```

```auto
ls --format=verbose $fichier | awk '{ print $5 }'

```

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Juillet 14, 2019, 10:44 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/5 "2019-07-14T10:44:25Z")

</div>

rediriger la sortie de dd dans un fichier texte

```auto
dd if=/dev/sdb of=fichierImageSdb.img bs=4096 status=progress > resul_dd.txt

```

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Juillet 14, 2019, 11:45 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/6 "2019-07-14T11:45:33Z")

</div>

> [@grandtoubab](#):
>
> rediriger la sortie de dd dans un fichier texte
> 
> ```auto
> dd if=/dev/sdb of=fichierImageSdb.img bs=4096 status=progress > resul_dd.txt
> 
> ```

Hello  
Merci pour ta réponse 🙂

J’ai déjà essayé mais rien ne sort dans le fichier texte ☹

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Juillet 14, 2019, 11:48 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/7 "2019-07-14T11:48:17Z")

</div>

Hello  
Merci pour ta réponse 🙂

L’option status=progress est très pratique mais ne permet pas de récupérer l’état du transfert pour pouvoir être exploiter.

En fait, je cherche à récupérer l’info sur létat du transfert pour la transmettre dans un script python 🙂

---

<div class="post-metadata">

**Author:** ![diesel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/diesel/32/8093_2.png) [@diesel](https://www.debian-fr.org/u/diesel)\
**Post date:** [Juillet 15, 2019, 1:27 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/8 "2019-07-15T13:27:08Z")

</div>

Je te propose :

`dd if=/dev/sdb of=fichierImageSdb.img bs=4096 status=progress 2> resul_dd.txt`

Amicalement.

Jean-Marie

---

<div class="post-metadata">

**Author:** ![domoticity](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/cc9497/32.png) [@domoticity](https://www.debian-fr.org/u/domoticity)\
**Post date:** [Juillet 15, 2019, 4:09 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/9 "2019-07-15T16:09:07Z")

</div>

Au top 🙂

petite question pourquoi le 2\> ?

merci encore 🙂

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Juillet 15, 2019, 4:15 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/10 "2019-07-15T16:15:37Z")

</div>

> [@](#):
>
> … trois symboles :
> 
> - `2>` : redirige les erreurs dans un fichier (s’il existe déjà, il sera écrasé) ;
> - `2>>` : redirige les erreurs à la fin d’un fichier (s’il n’existe pas, il sera créé) ;
> - `2>&1` : redirige les erreurs au même endroit et de la même façon que la sortie standard.

[https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/40444-les-flux-de-redirection](https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/40444-les-flux-de-redirection)

---

<div class="post-metadata">

**Author:** ![diesel](https://www.debian-fr.org/user_avatar/www.debian-fr.org/diesel/32/8093_2.png) [@diesel](https://www.debian-fr.org/u/diesel)\
**Post date:** [Juillet 15, 2019, 5:57 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/11 "2019-07-15T17:57:44Z")

</div>

Grantoubab a donné la réponse.

Pour ne pas interférer avec la sortie standard de la commande, status sort sur la sortie d’erreur.

2\>resul\_dd.txt sert donc à rediriger la sortie d’erreur vers le fichier resul\_dd.txt.

Cependant, il y a d’autres méthodes pour récupérer l’avancement de la commande dd :

[https://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress-while-coping/](https://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress-while-coping/)

Amicalement.

Jean-Marie

---

<div class="post-metadata">

**Author:** ![Asteroide404](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/97f17d/32.png) [@Asteroide404](https://www.debian-fr.org/u/Asteroide404)\
**Post date:** [Mars 2, 2020, 11:11 UTC](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/12 "2020-03-02T23:11:05Z")

</div>

```
dcfldd
```
