web-dev-qa-db-ja.com

.tar.gzファイルをアーカイブおよび抽出する方法

簡単な質問です。 x86 Solaris 10では、ファイルのフォルダー(データ)を圧縮するために次のことを試みました。

tar -cvf /path/to/Data/* | gzip > /path/to/archive/Data.tar.gz

これで、次を使用してファイル名とそのサイズを一覧表示できます。

gunzip -c Data.tar.gz

ただし、Data.tar.gzを(検証用に)圧縮解除しようとすると、次のようになります。

gzip -d Data.tar.gz
tar -xvf Data.tar

「チェックサムエラー」が発生する

誰かがSolaris 10でファイルを圧縮および抽出する正しい方法を提案してくれませんか。ありがとう

5
Shuvo Shams

archiveは2つのステップで実行できます。

$ tar cvf archive.tar file* 
$ gzip archive.tar

(archive.tarを削除する一方で、archive.tar.gzを作成します。)

抽出 2ステップでも:

$ gunzip archive.tar.gz

(archive.tarを作成し、archive.tar.gzを削除します。)

$ tar xvf archive.tar

.gzファイル内のファイルを一覧表示するには:

gzip -l archive.tar.gz

または、すべてのファイルをまとめて圧縮する7Zipを使用することもできます。

7z a archive.7z Makefile* (to create archive)
7z l archive.7z           (to list files inside the archive)
7z e archive.7z           (to extract)
16
januarvs

(必要に応じて)パイピングしているので、-を使用してstdinまたはstdoutを示す必要があります。例えば。

tar -cvf - data/* | gzip > data.tar.gz
gzip -dc data.tar.gz | tar -xvf -
3
Mark Adler

Gzipで読み取れるようにするには、tar cvfの出力をstdoutに送る必要があります。

tar cvf - <path> | gzip > <file>

一般に、相対パス名を使用することもお勧めします。 /で始まるパスを使用すると、別のシステムでアンパックする場合に問題が発生する可能性があります。 gnu tarは絶対パスを相対パスに変換します。 gnu tarは圧縮オプションも受け入れるため、gzipは不要になりました。

gnutar cvfz <file> <path>

さらに、次のようなこともできます。

tar cvf - <path> | ssh remotehost (cd <another dir>; gzip > <file>)

圧縮する前にディレクトリを変更します。

Solaris tarのマニュアルページには、他の例があります。 man tar(8)を参照してください。

2
paridaen