UNIX でフォルダーを zip 圧縮しようとしています。gzip コマンドを使用してこれを行うことはできますか?
答え1
いいえ。
とは異なりzip
、gzip
圧縮アルゴリズムとして機能する。のみ。
テープ ドライブの時代を思い起こさせるようなさまざまな理由により、Unix では、 というプログラムを使用してデータをアーカイブします。その後、 、、などtar
の圧縮プログラムを使用してデータを圧縮できます。gzip
bzip2
7zip
ディレクトリを「圧縮」するには、正しいコマンドは次のようになります。
tar -zcvf archive.tar.gz directory/
これtar
は、
圧縮するにはず(gzip) アルゴリズム
cファイルからアーカイブを作成する
directory
(tar
デフォルトでは再帰的です)ヴアーカイブに追加するすべてのファイルを (詳細に) リストします (/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