
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