web-dev-qa-db-ja.com

UNIXコマンドラインでどのように圧縮/解凍するのですか?

コマンドラインからZipアーカイブを作成および抽出するにはどうすればよいですか?

570
joachim

通常、tarを使用して非圧縮アーカイブを作成し、gzipまたはbzip2を使用してそのアーカイブを圧縮します。対応するgunzipおよびbunzip2コマンドを使用して、上記のアーカイブを解凍するか、tarコマンドでフラグを使用して解凍を実行できます。

特に Zipファイル形式 を参照している場合は、Zipおよびunzipコマンドを使用するだけで済みます。

圧縮するには:

Zip squash.Zip file1 file2 file3

またはディレクトリを圧縮する

Zip -r squash.Zip dir1

解凍するには:

unzip squash.Zip

これにより、現在の作業ディレクトリに解凍されます。

698
Justin Ethier

UNIXでの圧縮と解凍には、本当にvastさまざまな方法があるので、特定ではなく、一般的な意味で「Zip」を意味していると想定します。ファイル形式。

GNU tarプログラムを使用して、ファイルを圧縮形式で圧縮できます。

tar -zcvf myfile.tgz .

現在のディレクトリを実行します。他のファイルが必要な場合は、.を他のファイル名に置き換えます。

そのファイルを解凍するには、次を使用します。

tar -zxvf myfile.tgz

もちろん、ファイルを1つに結合するだけでなく、圧縮を実行できるtarがあることを前提としています。

そうでない場合は、tar cvfの後にgzipを付けて(もしあれば)圧縮に使用し、gunzipの後にtar xvfを付けます。


Zip形式のファイルの特定の処理については、7Zipをダウンロードして使用することをお勧めします。これは、Zip形式を含むhugeのさまざまなファイル形式を認識します。

68
user14408

Zipおよびunzipパッケージがインストールされておらず、Javaがある場合は、jarを使用して解凍できます。

jar -xf file.Zip
33
mlocke

まあ、さまざまなオペレーティングシステム用のファイルを配布することになると、 7-Zip をお勧めします。

通常、パッケージp7Zipには、独自の7zアーカイブを作成できる7zおよび7zaコマンドが含まれています。

7zaは、標準( pkzip )Zipアーカイブを解凍することもできます(-tzipスイッチを使用してアーカイブを作成することもできます)。

圧縮:

7za a archive.7z file1 file2 directory/

解凍:

7za x archive.7z

-sfxスイッチを使用して自己解凍型アーカイブを作成することもできます。

7za a -sfx archive.exe files1 file2 dir

Windowsユーザーが7zアーカイブを開けない場合に備えて、この方法をお勧めします(そのためのツールをアドバイスしたい場合: PeaZip )。

Tarballで同じ圧縮アルゴリズムを使用する場合は、tar-Jスイッチを使用します。

tar cJf archive.tar.xz file1 file2 dir

xz はUNIXツールであり、圧縮にLZMA2を使用しますが、gzbz2などが機能します。フィルターとしても機能します。

7zはUNIXで完全なファイルシステム情報を含むアーカイブを作成しないため、7zを使用する前にtarを使用する必要があります(ただし、7zはtarファイルに関する他の情報を保存するため、お勧めしますxzを使用して設計されているため):

tar cf - file1 file2 dir | 7za z -si archive.tar.7z
30
polemon
unzip <filename>

そして

Zip -r archive.Zip <filename> [filename]

これらのコマンドがパッケージマネージャー経由でインストールされていることを確認する必要があります。コマンドラインで他のものを使用するよりも簡単です。 tarでアーカイブを作成するよりも確かに簡単です。

23
Starfish

BSD Tarもこれを行うことができます

bsdtar -a -c -f sunday.Zip sunday.jpg

または:

bsdtar -x -f sunday.Zip
4
Steven Penny

最も標準的な答えは pax であり、これは cpio および tar よりも推奨されます。

cpioやPOSIX tarとは異なり、GNU tarと同様に、paxはファイルのアーカイブと圧縮の両方が可能ですこの動作は、アーカイブに入れる前に各ファイルを圧縮する Zip とは異なります。

3
mouviciel

これは抽出のみをカバーしています。

そのため、私は dtrx を使い始めました。

それの要点は、複雑さを取り除くことです。したがって、アーカイブをそれに渡すだけで、アーカイブで何を実行する必要があるかがわかります。 Zip、tar、gz ...使用法は常に同じです— dtrx archive.Zip。いくつかの質問をするだけで完了です。

dtrxはほとんどのリポジトリで使用できるため、apt | yumをインストールできます。

2
JackLeo

自分の作業ディレクトリにある変更されたファイルをZip圧縮しようとすることがよくあります-変​​更されたすべてのファイルを別のサンドボックス作業ディレクトリにコピーするか、一部の変更を元に戻したいのでしばらく保存します。

その場合、変更されたファイルのリストを一時ファイルにコピーし、Zipをオプション-@とともに使用します。

ファイルFoo.h、Bar.cc、TestBar.ccを変更したとしましょう。

内容が次のように変更されたfiles.txtというファイルを作成するとします。

Foo.h
Bar.cc
TestBar.cc

次のコマンドを実行して、これらのファイルを圧縮します。

cat modified-files.txt | Zip modified-files.Zip -@
1
R Sahu