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

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

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

答え1

いいえ。

zipとは異なり、gzip圧縮アルゴリズムとして機能します。ただ

いくつかの理由で(一部はテープドライブの時代にさかのぼります)、Unixはアーカイブデータと呼ばれるプログラムを使用します。このプログラムはtar、、などの圧縮プログラムを使用して圧縮できますgzipbzip27zip

ディレクトリを「圧縮」するには、正しいコマンドは次のとおりです。

tar -zcvf archive.tar.gz directory/ 

これがtar教えてくれます

  • それを使用して圧縮(gzip) アルゴリズム

  • (作成)次からアーカイブdirectorytarデフォルトは再帰的です)

  • Vアーカイブに追加するすべてのファイルを(詳細に)(/dev/stderrでパイプされたコマンドに影響を与えないように)リストします。

  • 出力を次のように保存します。F(ファイル) 名前が指定されましたarchive.tar.gz

このtarコマンドは、純粋にユーザーの便宜のためにフラグを介してgzipサポートを提供します-z。 /lib コマンドgzipは完全に独立しています。上記のコマンドは実際には次のようになります。

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

アーカイブを解凍して現在のディレクトリに抽出するには、次のようにします。

tar -zxvf archive.tar.gz

このコマンドは実際には次のようになります。

gunzip < archive.tar.gz | tar -xv

tar他にも多くのオプションと用途があります。時々マンページを読むことを心からお勧めします。

答え2

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

はい

今後

$ 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

ディレクトリ構造を圧縮するには、この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

これにより、次のような単一のファイルが生成されます。

$ 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を使用してフォルダ全体を圧縮できますか?」という質問に対する答えは、次の構文を使用してzipgzipの代わりにこのプログラムを使用できることです。

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

答え4

pigz(GZipの並列実装)

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

関連情報