gzip を使用してフォルダー全体を圧縮できますか?

gzip を使用してフォルダー全体を圧縮できますか?

UNIX でフォルダーを zip 圧縮しようとしています。gzip コマンドを使用してこれを行うことはできますか?

答え1

いいえ。

とは異なりzipgzip圧縮アルゴリズムとして機能する。のみ

テープ ドライブの時代を思い起こさせるようなさまざまな理由により、Unix では、 というプログラムを使用してデータをアーカイブします。その後、 、、などtarの圧縮プログラムを使用してデータを圧縮できます。gzipbzip27zip

ディレクトリを「圧縮」するには、正しいコマンドは次のようになります。

tar -zcvf archive.tar.gz directory/ 

これtarは、

  • 圧縮するには(gzip) アルゴリズム

  • cファイルからアーカイブを作成するdirectorytarデフォルトでは再帰的です)

  • アーカイブに追加するすべてのファイルを (詳細に) リストします (/dev/stderr 上に出力するため、パイプ コマンドには影響しません)。

  • 出力を(ファイル) 名前archive.tar.gz

このtarコマンドは、gzip-zフラグを介して)純粋に利便性のためにサポートを提供します。gzipコマンド/ライブラリは完全に分離されています。上記のコマンドは、実質的に

tar -cv directory | gzip > archive.tar.gz

アーカイブを現在のディレクトリに解凍するには、

tar -zxvf archive.tar.gz

そのコマンドは実質的に

gunzip < archive.tar.gz | tar -xv

tar他にも非常に多くのオプションと用途があります。いつかそのマニュアルページを一読することを心からお勧めします。

答え2

スイッチを使用する場合、コマンドgzipはディレクトリを単一の zip ファイルに再帰的に圧縮しません-r。代わりに、ディレクトリ構造を調べて、見つかった各ファイルを個別のファイルに zip します。

前に

$ tree dir1/
dir1/
|-- dir11
|   |-- file11
|   |-- file12
|   `-- file13
|-- file1
|-- file2
`-- file3

次のgzipコマンドを実行します

$ gzip -r dir1

$ tree dir1/
dir1/
|-- dir11
|   |-- file11.gz
|   |-- file12.gz
|   `-- file13.gz
|-- file1.gz
|-- file2.gz
`-- file3.gz

ディレクトリ構造を zip ファイルに圧縮したい場合は、tarコマンドを使用して、結果の.tarファイルを圧縮するとよいでしょう。

$ tar zcvf dir1.tar.gz dir1/

$ tar zcvf dir1.tar.gz dir1/
dir1/
dir1/file1
dir1/file2
dir1/dir11/
dir1/dir11/file11.gz
dir1/dir11/file12.gz
dir1/dir11/file13.gz
dir1/file3

結果は次の 1 つのファイルになります。

$ ls -l | grep tar
-rw-rw-r-- 1 saml saml  271 Oct  1 08:07 dir1.tar.gz

内容は以下のとおり確認できます:

$ tar ztvf dir1.tar.gz 
drwxrwxr-x saml/saml         0 2013-10-01 08:05 dir1/
-rw-rw-r-- saml/saml         0 2013-10-01 07:45 dir1/file1
-rw-rw-r-- saml/saml         0 2013-10-01 07:45 dir1/file2
drwxrwxr-x saml/saml         0 2013-10-01 08:04 dir1/dir11/
-rw-rw-r-- saml/saml        27 2013-10-01 07:45 dir1/dir11/file11.gz
-rw-rw-r-- saml/saml        27 2013-10-01 07:45 dir1/dir11/file12.gz
-rw-rw-r-- saml/saml        27 2013-10-01 07:45 dir1/dir11/file13.gz
-rw-rw-r-- saml/saml         0 2013-10-01 07:45 dir1/file3

答え3

「Linux で gzip を使用してフォルダー全体を zip 圧縮できますか?」という質問に対する答えは、zip次の構文を使用して、gzip の代わりにプログラムを使用できるということです。

zip -r <zip file name> <folder to zip>

答え4

pigz(を使用することをお勧めしますGZipの並列実装

tar -cvf - dir | pigz -9 > /path/to/dir.tar.gz

関連情報