
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