web-dev-qa-db-fra.com

Calculez combien d'espace disque aurait été utilisé

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.

25
fancyPants

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 ...

37
Magnus

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.

28
djsmiley2k

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
0
styrofoam fly