それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

コマンド(lzop)の圧縮展開の進捗どうですかー?(pvコマンドで進捗を見る)

lzop 速くて便利だけど。どこまで終わってるの

lzop って圧縮伸張がそこそこ速くて便利だけど、それでも数十GBやると結構時間がかかるんですよね。

その進捗見たいです。

f:id:takuya_1st:20170306172013j:plain

progress コマンドでは出来ないことがわかった。

progress コマンドも候補に入るらしいので調べたら、lzop は非対応だった。

progress コマンドが対応しているモノ

 cp, mv, dd, tar, cat, rsync, grep, 
fgrep, egrep, cut, sort, md5sum, 
sha1sum, sha224sum, sha256sum, 
sha384sum, sha512sum, adb, gzip, gunzip,
 bzip2, bunzip2, xz, unxz, lzma,
 unlzma, zcat, bzcat, lzcat

lzop ないよ。。うわーん

mv や cp なら簡単なんだけど

mv / cp なら、かわりにrsync --prgoress使うとか。

dst/src だから $(( $(stat -c %s dst ) / $(stat -c %s dst ) )) を見ればいいわけですよね。でも、圧縮伸張の場合は、ファイルサイズが変わるのでどうしたものかと。

pv を見つけた

pv はパイプを通過したファイルサイズをカウントする方法。

そうか、パイプを通せばいいのか。

パイプからデータを読み込んで処理するプログラムなら、入力ストリームを通過したサイズと元ファイルのサイズを比較すればある程度のデータ処理進捗は見えるわけですよね。なるほど

インストール

brew install pv 

実際使ってみた。

$ pv ubuntu.usb.img.lzo | lzop --verbose -d -o out.img -
decompressing <stdin> 
into 4.94GiB 0:00:59 [9.86MiB/s]
 [=======================================>                                                ] 69% ETA 0:00:26

おお、行けるぞコレ。

これで、圧縮伸張などの進捗を表示することが出来ますね。ffmpeg なんかもイケルと思う。ファイルベースのパイプのアクセスって本当に便利ですね。

巨大な mysqlSQLを読み込んでるときとか、ファイルとパイプベースで処理されるコマンドならほぼ全てコレで解決する。

debian/ubuntu なら

apt-get install pv 

簡単です

参考資料

Linuxで『progress』コマンドを使って動いてるcpやmv、tarの進捗状況を調べる | 俺的備忘録 〜なんかいろいろ〜

進捗どうですか? - 時間のかかる処理の進捗を確認 - Qiita

提供元

https://www.ivarch.com/programs/pv.shtml

2017-06-28

若干追記