Linux 上是否有一个程序可以计算一个程序会产生多少数据?
例如,如果我想备份我的 MySQL 数据库,我通常会这样做
mysqldump > dumpfile.sql
相反,我想重定向到/dev/null
但计算将使用多少磁盘空间,例如
mysqldump | fancy_space_calc_program
输出:
123456789 Bytes would have been used
注意,MySQL 备份只是一个例子。我很清楚如何预先估计大小,所以请不要对此发表评论。
答案1
取自https://stackoverflow.com/questions/13418688/use-pipe-with-du-to-compute-size-of-stdin
您可以将其传输到管道来
wc -c
计算通过管道的字节数。
当然,这只是原始字节,与扇区大小等无关,所以对此持谨慎态度......
答案2
命令 pv 非常适合此用途。
mysqldump | pv -b > /dev/null
我认为以上内容将为您提供所需的正确命令,但可能需要进行一些调整,例如pv -b | > /dev/null
我现在无法测试
-b
给出一个以字节为单位的值。
答案3
您可以dd
像这样使用它cat /dev/zero | dd status=progress of=/dev/null bs=4M
。
这会在执行期间和执行之后为您提供有关传递给它的数据量的某些数据,例如:
$ 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