8

問題: ある時点で彼が大きな tar ファイルを収集して構築するバックエンド プロセスがあります。この tar は、いくつかのディレクトリと除外ファイルを受け取ります。このプロセスには数分かかる場合があり、風袋引きプロセスの進行状況をフロントエンド プロセス (GUI) で報告したい (これはダウンロード ボタンを押すユーザーにとって大きな問題であり、何も起こっていないように見える. ..)。

tar コマンドで -v -R を使用してファイル数とサイズの進行状況をカウントできることはわかっていますが、予想されるファイル数または予想される tar サイズのいずれかを評価するのに役立つ、ある種の tar プレラン モード/ドライ ランを探しています。 .

私が使用しているコマンド:tar -jcf 'FILE.tgz' 'exclude_files' 'include_dirs_and_files'

協力してくれる人全員に 10 倍。

4

2 に答える 2

15

wc実際にファイルを作成する代わりに、出力をツールにパイプできます。

ファイルの一覧表示 (詳細):

[git@server]$ tar czvf - ./test-dir | wc -c
./test-dir/
./test-dir/test.pdf
./test-dir/test2.pdf
2734080

それなし:

[git@server]$ tar czf - ./test-dir | wc -c
2734080
于 2013-12-09T17:13:44.873 に答える
1

なぜあなたは実行しませんか

DIRS=("./test-dir" "./other-dir-to-test")
find ${DIRS[@]} -type f | wc -l

予め。これにより、すべてのファイル ( -type f) が 1 行に 1 つずつ取得され、ファイルの数がカウントされます。DIRS は bash の配列であるため、フォルダーを変数に格納できます

保存されているすべてのファイルのサイズを知りたい場合は、次を使用できますdu

DIRS=("./test-dir" "./other-dir-to-test")
du -c -d 0 ${DIRS[@]} | tail -1 | awk -F ' ' '{print $1}'

これは、でディスク使用量を出力し、du総計を計算し ( -cflag )、最後の行を取得し ( example 4378921 total)、最初の列のみを使用しますawk

于 2016-10-07T07:49:10.547 に答える