24546


特定の1ディレクトリ`hoge/`をアーカイブ化するスクリプトを作成したいのですが、  
以下のように進捗率を表示したいです。

[code]

    $ ./hoge_dir_backup.sh  #tarコマンドでアーカイブ化している
    30%
    75%
    98%
    ...
    
[/code]

最初に`hoge/`内のファイル数をカウントしておき、`tar`の`-v`オプションで出力  
されたファイルをカウントするという力技でも進捗率は得られるのですが、  
ほかにスマートなやり方はないでしょうか？


CC BY-SA 3.0
2016-05-04T00:32:00.757
24544
2016-05-04T03:58:57.733
2016-05-04T03:58:57.733
15147
15147
question
bash shellscript sh
アーカイブ化する際の進捗率を取得したい。


[Pipe Viewer](http://www.ivarch.com/programs/pv.shtml) を使ってみてはいかがでしょうか。

[Online Man Page](http://www.ivarch.com/programs/quickref/pv.shtml)
に載っている実行例が参考になります。

[code]

    (tar cf - . \
    | pv -n -s $(du -sb . | awk '{print $1}') \
    | gzip -9 > out.tgz) 2>&1 \
    | dialog --gauge 'Progress' 7 70 
    
[/code]

この例では `dialog` コマンドを使っていますが、以下の様にしても良いかと思います。

[code]

    $ tar cf - hoge | pv -p -s $(du -sb hoge | cut -f1) > output.tar
    
[/code]


CC BY-SA 3.0
2016-05-04T03:24:09.047
24546
2016-05-04T03:31:33.243
2016-05-04T03:31:33.243
24544
answer