¿Existe en Linux un programa que pueda calcular cuántos datos produciría un programa?
Por ejemplo, si quisiera hacer una copia de seguridad de mi base de datos MySQL, normalmente lo haría
mysqldump > dumpfile.sql
En cambio, me gustaría redirigir /dev/null
pero calcular cuánto espacio en disco se habría utilizado, como
mysqldump | fancy_space_calc_program
Salida:
123456789 Bytes would have been used
Tenga en cuenta que la copia de seguridad de MySQL es solo un ejemplo. Soy muy consciente de cómo podría estimar el tamaño de antemano, así que no hay comentarios al respecto.
linux
disk-space
pantalones de lujo
fuente
fuente
Respuestas:
Tomado de /programming/13418688/use-pipe-with-du-to-compute-size-of-stdin
Por supuesto, esto es solo los bytes sin procesar, y no tiene nada que ver con el tamaño del sector, etc., así que tómalo con un grano de sal ...
fuente
wc
descartará los datos que ya no necesita tan pronto como sea posible.wc
en mi computadora maneja fácilmente datos estándar de 40 GB, con solo 8 GB de memoria.wc -c
no cuenta caracteres, cuenta bytes.wc -m
cuenta personajes. La diferencia más obvia está en los caracteres de varios bytes como en UTF-16 o Windows\r\n
(dos bytes en ASCII, pero un carácter). No necesariamente necesita mucho almacenamiento en búfer la mayor parte del tiempo, pero Unicode puede tener una cantidad arbitraria de bytes para representar un solo carácter; no es algo que verías en datos confiables, sino un posible vector de desbordamiento de búfer.El comando pv es perfecto para esto.
Creo que lo anterior le dará el comando correcto que desea, puede necesitar algunos ajustes,
pv -b | > /dev/null
como no puedo probar en este momento-b
le da un valor en bytes.fuente
pv
antes ... Aprendes algo nuevo todos los días :)Puedes usarlo
dd
asícat /dev/zero | dd status=progress of=/dev/null bs=4M
.Esto le proporciona algunos datos durante y después de la ejecución sobre la cantidad de datos que se le pasan, como:
fuente