lzop 速くて便利だけど。どこまで終わってるの
lzop って圧縮伸張がそこそこ速くて便利だけど、それでも数十GBやると結構時間がかかるんですよね。
その進捗見たいです。
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 なんかもイケルと思う。ファイルベースのパイプのアクセスって本当に便利ですね。
巨大な mysql のSQLを読み込んでるときとか、ファイルとパイプベースで処理されるコマンドならほぼ全てコレで解決する。
debian/ubuntu なら
apt-get install pv
簡単です
参考資料
Linuxで『progress』コマンドを使って動いてるcpやmv、tarの進捗状況を調べる | 俺的備忘録 〜なんかいろいろ〜
進捗どうですか? - 時間のかかる処理の進捗を確認 - Qiita
提供元
https://www.ivarch.com/programs/pv.shtml
2017-06-28
若干追記