Existe no Linux um programa que pode calcular quantos dados um programa produziria?
Por exemplo, se eu gostaria de fazer backup do meu banco de dados MySQL, eu normalmente faria
mysqldump > dumpfile.sql
Em vez disso, gostaria de redirecionar para, /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
Note, o backup do MySQL é apenas um exemplo. Estou muito ciente de como eu poderia estimar o tamanho antes, então não faça comentários sobre isso.
linux
disk-space
fancyPants
fonte
fonte
Respostas:
Retirado de /programming/13418688/use-pipe-with-du-to-compute-size-of-stdin
Obviamente, esses são apenas os bytes brutos e não têm nada a ver com o tamanho do setor, etc., então leve-o com um pouco de sal ...
fonte
wc
descartará os dados desnecessários assim que possível.wc
no meu computador manipulam facilmente dados stdin de 40 GB, com apenas 8 GB de memória.wc -c
não conta caracteres - conta bytes.wc -m
conta caracteres. A diferença mais óbvia está nos caracteres de vários bytes, como no UTF-16 ou no Windows\r\n
(dois bytes em ASCII, mas um caractere). Na maioria das vezes, não é necessário muito armazenamento em buffer, mas o Unicode pode ter uma quantidade arbitrária de bytes para representar um único caractere; não algo que você veria em dados confiáveis, mas um possível vetor de estouro de buffer.O comando pv é perfeito para isso.
Eu acho que o acima 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.fonte
pv
antes .. Você aprende algo novo a cada dia :)Você pode usar
dd
para isso, assimcat /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 transmitidos a ele, como:
fonte