質問: 特定の1ディレクトリ`hoge/`をアーカイブ化するスクリプトを作成したいのですが、 以下のように進捗率を表示したいです。 ``` $ ./hoge_dir_backup.sh #tarコマンドでアーカイブ化している 30% 75% 98% ... ``` 最初に`hoge/`内のファイル数をカウントしておき、`tar`の`-v`オプションで出力 されたファイルをカウントするという力技でも進捗率は得られるのですが、 ほかにスマートなやり方はないでしょうか?
回答: Pipe Viewer を使ってみてはいかがでしょうか。 Online Man Page に載っている実行例が参考になります。 ``` (tar cf - . \ | pv -n -s $(du -sb . | awk '{print $1}') \ | gzip -9 > out.tgz) 2>&1 \ | dialog --gauge 'Progress' 7 70 ``` この例では `dialog` コマンドを使っていますが、以下の様にしても良いかと思います。 ``` $ tar cf - hoge | pv -p -s $(du -sb hoge | cut -f1) > output.tar ```