
¿Existe en Linux un programa que pueda calcular la cantidad de datos que produciría un programa?
Por ejemplo, si quisiera hacer una copia de seguridad de mi base de datos MySQL, normalmente haría
mysqldump > dumpfile.sql
En lugar de eso, me gustaría redirigir /dev/null
pero calcular cuánto espacio en disco se habría utilizado, como
mysqldump | fancy_space_calc_program
Producción:
123456789 Bytes would have been used
Tenga en cuenta que la copia de seguridad de MySQL es sólo un ejemplo. Soy muy consciente de cómo podría estimar el tamaño de antemano, así que no hagas comentarios al respecto.
Respuesta1
Tomado dehttps://stackoverflow.com/questions/13418688/use-pipe-with-du-to-compute-size-of-stdin
Puede canalizarlo para
wc -c
contar el número de bytes que pasan por la canalización.
Por supuesto, estos son solo los bytes sin procesar y no tienen nada que ver con el tamaño del sector, etc., así que tómalo con cautela...
Respuesta2
El comando pv es perfecto para esto.
mysqldump | pv -b > /dev/null
Creo que lo anterior le dará el comando correcto que desea, es posible que necesite algunos ajustes, como pv -b | > /dev/null
los que no puedo probar en este momento.
-b
te da un valor en bytes.
Respuesta3
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:
$ 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