web-dev-qa-db-ja.com

解凍せずに.tar.gz内のファイルサイズ(元のファイルサイズ)を取得するにはどうすればよいですか?

以下のコマンドでmyfile.txtをZipファイルに作成します。元のファイルサイズ「myfile.txt」を解凍せずに取得する方法はありますか。

tar -czf myfile.tar.gz myfile.txt
2
αғsнιη

Zipファイルの非圧縮サイズを取得するには、オプション--listまたは-lgzip を発行します

gzip -l mytext.txt.tar.gz

これにより、次のような出力が得られます。

gzip -l mytext.txt.tar.gz
         compressed        uncompressed  ratio uncompressed_name
               1475                4608  68.4% mytext.txt.tar

圧縮ファイルのサイズ、非圧縮サイズ、および圧縮率を設定するには。

3
Takkat

次を使用して、tarファイルのコンテンツ(元のファイルサイズを含む)を一覧表示できます。

tar -vtf myfile.tar.gz

myfile.txtのみが必要な場合:

tar -vtf myfile.tar.gz myfile.txt

これは、完全なファイルパスを追加する場合にのみ機能し、そうでない場合は以下を使用します。

tar -vtf myfile.tar.gz | grep myfile.txt

Tarは、ファイル情報を取得するためにアーカイブを解凍する必要があることに注意してください。ただし、それはあなたから隠されます。

アーカイブ全体を解凍せずにファイルのメタデータを取得する方法が特に必要な場合は、Zipを使用してファイルとディレクトリを保存することをお勧めします。 Zipは、すべてのファイルメタデータを格納するZipファイルの最後にある「中央ディレクトリ」を使用します。

1
NZD

私はすべてのサイトをWebで見つけていますが、ファイルサイズが4GBより大きい場合、サイズを取得するというこの問題を解決しません。

最初に、どれが最も速いですか?

 [Oracle @ base tmp] $ time zcat Oracle.20180303.030001.dmp.tar.gz | wc -c 
 6667028480 
 
実0m45.761s 
ユーザー0m43.203s 
 sys 0m5.185s 
 [Oracle @ base tmp] $ time gzip -dc Oracle.20180303.030001.dmp.tar.gz | wc -c 
 6667028480 
 
実0m45.335s 
ユーザー0m42.781s 
 sys 0m5.153s 
 [Oracle @ base tmp] $ time tar -tvf Oracle.20180303.030001.dmp.tar.gz 
 -rw-r--r-- Oracle/oinstall 111828 2018-03-03 03: 05 Oracle.20180303.030001.log 
 -rw-r ----- Oracle/oinstall 6666911744 2018-03-03 03:05 Oracle.20180303.030001.dmp 
 
 real 0m46。 669s 
ユーザー0m44.347s 
 sys 0m4.981s 

間違いなく、tar -xvfが最も高速ですが、ヘッダー取得後に実行をキャンセルする方法は?

私の解決策はこれです

 
 [Oracle @ base tmp] $ time echo $(timeout --signal = SIGINT 1s tar -tvf Oracle.20180303.030001.dmp.tar.gz | awk '{print $ 3}')| grep -o '[[:digit:]] *' | awk '{sum + = $ 1} END {print sum}' 
 6667023572 
 
 real 0m1.029s 
 user 0m0.012s 
 sys 0m0 .063s 
0
RaZieRSarE