UNIXコマンドラインでzip / unzipするにはどうすればよいですか?


541

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


3
@joachim、質問で質問し、回答で回答を提供する必要があります。自分の質問に答えることには問題はありませんが、質問自体の一部としてではありません。これは、SOのコミュニティでのベストアンサー投票の利点全体を破壊するからです。さらに、プログラミングに関連していないため、これはおそらくスーパーユーザーにより適しています。

2
ログインを忘れた場合、どこでオンラインになり、SOをチェックするかをどこで文書化しますか?

@ rlb.usa:私は多くの異なるサーバーの多くの異なる場所で働いています。このようなメモにSAを使用すると、他の人にも役立ちます。
-joachim

回答:


663

通常、1は使用しtar、非圧縮アーカイブのいずれかを作成するgzipか、bzip2そのアーカイブを圧縮します。対応するgunzipand bunzip2コマンドを使用して、前述のアーカイブを圧縮解除するか、tarコマンドでフラグを使用して圧縮解除を実行できます。

Zipファイル形式を具体的に参照している場合は、単にzipand unzipコマンドを使用できます。

圧縮するには:

zip squash.zip file1 file2 file3

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

zip -r squash.zip dir1

解凍するには:

unzip squash.zip

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


72
個人的にはzip -r9 archive.zip files...構文(-r = recursive -9 = max compression)のみを使用します。
amphetamachine

3
サイドノートとして:zip.ZIPアーカイブの多くの異なるフレーバーを作成でき、多くの異なるコンプレッサーを使用できます。一方、7-Zip、gzip、bzip2、rzipなど、互換性のない同様の名前の圧縮ツールがいくつかあります。
ポレモン

5
親ディレクトリを含めたくない場合:cd dir1; zip -r ../squash.zip *
Marinos An

私は混乱しています、これを行って、インフレと抽出の長いリストを取得しますが、ディレクトリをチェックすると空です、元のzipファイルを保存しますか?それはどこに行くのですか?
夏の開発者

11
レコードについては、すべてのファイルを現在のディレクトリに直接配置するのではなくunzip -d myfolder squash.zip、別の新しいディレクトリ(myfolder)に抽出するために使用します。これは、ほとんどのUI解凍ツールの動作を模倣しています。
アレクサンダークリメチェック

64

本当に存在する広大な私は、あなたが一般的な意味ではなく、中に「ジップ」を意味と仮定するつもりですので、UNIX誘導体の下で圧縮して解凍するには、いくつかの異なる方法特定のファイル形式は。

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

tar -zcvf myfile.tgz .

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

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

tar -zxvf myfile.tgz

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

ない場合は、あなただけ使用することができますtar cvf続いgzip圧縮のために(利用可能な場合、再び)とgunzip続きますtar xvf


ZIP形式のファイルの特定の処理については、ダウンロード7zipして使用することをお勧めします。ZIP形式のファイルを含む非常に多様なファイル形式を認識します。


またはtar jcvf file.tar.bz2...、bzip2形式またはtar Jcvf file.tar.xz ...xz圧縮での圧縮に使用します。
オールドタイマー

4
質問はtarファイルではなくzipアーカイブをどのように扱うかに関するものなので、私はあなたの答えを否定しました。
ヒトデ

3
@Starfish、それは確かにあなたの権利の範囲内です、少なくとも理由を説明してくれてありがとう、多くの人がそうするのに時間をかけません:-)私は特定の形式ではなく、より一般的な意味で「zip」を取りましたそれで私はそれをより明確にします。

MacからLinux、またはその逆の異なるプラットフォーム間を移動する場合、tarアーカイブが正しく機能しない可能性があることに注意してください。Zipはすべてのシステムで正常に動作するため、はるかに安全です。
user1751825

技術的にはgzipなので、それで問題ありません。私は推測する。質問が要求したこととは明らかに異なります。
フクロウ

30

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

jar -xf file.zip

3
私のサーバーではなく、unzip、zip、7z、何も...そしてこれはうまくいきました。ありがとう!
ダリウス

2
これは素晴らしいヒントです。
ヒトデ

29

さまざまなオペレーティングシステム用のファイルの配布に関しては、7-zipをお勧めします。

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

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で同じ圧縮アルゴリズムを使用する場合は、-Jスイッチをtar次のように使用します。

tar cJf archive.tar.xz file1 file2 dir

xz圧縮のためのLZMA2を使用しますが、動作方法をUNIXツール、あるgzbz2などの作品が。フィルターとしても機能します。

UNIXでは、7zは完全なファイルシステム情報を含むアーカイブを作成しないため、tar7z を使用する前に使用する必要があります(ただし、7zはtarファイルに関する他の情報を格納するため、使用することをお勧めしますxz)。

tar cf - file1 file2 dir | 7za z -si archive.tar.7z

2
おそらくこの回答にを追加する必要があります。これはatool、多くの異なるコンプレッサーをより快適に使用できる素敵な小さなツールです。aそれにバインドし、アーカイブを作成するa arc.7z folder/か、単純なものを抽出しますa arc.7z
ポールモン

21
unzip <filename>

そして

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

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


これは古いスレッドですが、これが最良の答えです。7zまたはtarについては説明しません。簡潔でわかりやすく説明します
カイル

4

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

bsdtar acf bravo.zip alfa.jpg

または:

bsdtar xf bravo.zip

BSDにtarは、GNU tarやその他tarのものと比較して、かなり多くの追加の圧縮形式をサポートできるという利点があります。最大の利点は、おそらく、-like構文を使用tarしているときにそうすることです。あなたは確実に使用することができ7zunrarunzipコマンドラインから、などを、彼らは使用異なる構文を。
njsg

3

最も標準的な答えはpax以上推奨されている、cpiotar

cpioPOSIX とは異なりtarますが、GNU tarと同様に、paxファイルをアーカイブし、アーカイブを圧縮できます。この動作はzip、アーカイブに配置する前に各ファイルを圧縮するとは異なります。


1
paxzipアーカイブをサポートしていますか?
ヒトデ

いいえ、paxアーカイブもサポートしていません!
-roblogic

2

これは抽出のみを対象としています。

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

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

dtrxはほとんどのリポジトリで利用できるため、次のことができますaptyumそれをインストールします。


1

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

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

Foo.h、Bar.cc、TestBar.ccの各ファイルを変更したとします。

内容が次のようなmodified-files.txtというファイルを作成したとしましょう。

Foo.h
Bar.cc
TestBar.cc

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

cat modified-files.txt | zip modified-files.zip -@
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.