Existe-t-il sur Linux un programme capable de calculer la quantité de données qu’un programme produirait?
Par exemple, si je souhaite effectuer une sauvegarde de ma base de données MySQL, je le ferais habituellement.
mysqldump > dumpfile.sql
Au lieu de cela, je voudrais rediriger vers /dev/null
mais calculer combien d’espace disque aurait été utilisé, comme
mysqldump | fancy_space_calc_program
Sortie:
123456789 Bytes would have been used
Notez que la sauvegarde MySQL n’est qu’un exemple. Je sais très bien comment je pourrais estimer la taille d'avant, alors s'il vous plaît, ne faites pas de commentaires à ce sujet.
Extrait de https://stackoverflow.com/questions/13418688/use-pipe-with-du-to-compute-size-of-stdin
Vous pouvez le diriger vers
wc -c
pour compter le nombre d'octets qui traversent le pipeline.
Bien sûr, il ne s’agit que des octets bruts, et n’a rien à voir avec la taille du secteur, etc., alors prenez-le avec un grain de sel ...
La commande pv est parfaite pour cela.
mysqldump | pv -b > /dev/null
Je pense que ce qui précède vous donnera la commande que vous voulez, il faudra peut-être un ajustement tel que pv -b | > /dev/null
car je ne peux pas le tester pour le moment.
-b
vous donne une valeur en octets.
Vous pouvez utiliser dd
pour cela, comme ceci cat /dev/zero | dd status=progress of=/dev/null bs=4M
.
Cela vous fournit des données pendant et après l'exécution sur la quantité de données qui lui sont transmises, comme:
$ cat /dev/zero | dd status=progress of=/dev/null
5371334656 bytes (5.4 GB, 5.0 GiB) copied, 4 s, 1.3 GB/s^C # this is progress data
12271136+0 records in #summary
12271135+0 records out #summary
6282821120 bytes (6.3 GB, 5.9 GiB) copied, 4.66683 s, 1.3 GB/s #summary