
Existe no Linux um programa que pode calcular quantos dados um programa produziria?
Por exemplo, se eu quiser fazer backup do meu banco de dados MySQL, normalmente faria
mysqldump > dumpfile.sql
Em vez disso, gostaria de redirecionar, /dev/null
mas calcular quanto espaço em disco teria sido usado, como
mysqldump | fancy_space_calc_program
Saída:
123456789 Bytes would have been used
Observe que o backup do MySQL é apenas um exemplo. Estou muito ciente de como poderia estimar o tamanho de antemão, então, por favor, não faça comentários sobre isso.
Responder1
Tirado dehttps://stackoverflow.com/questions/13418688/use-pipe-with-du-to-compute-size-of-stdin
Você pode canalizá-lo para
wc -c
contar o número de bytes que passam pelo pipeline.
Claro, estes são apenas os bytes brutos e não têm nada a ver com o tamanho do setor, etc., então leve isso com cautela ...
Responder2
O comando pv é perfeito para isso.
mysqldump | pv -b > /dev/null
Acho que o texto acima lhe dará o comando certo que você deseja, pode precisar de alguns ajustes, como pv -b | > /dev/null
não posso testar agora
-b
fornece um valor em bytes.
Responder3
Você pode usar dd
para isso, assim cat /dev/zero | dd status=progress of=/dev/null bs=4M
.
Isso fornece alguns dados durante e após a execução sobre a quantidade de dados passados para ela, como:
$ 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