UnixコマンドラインでZip/解凍するにはどうすればよいですか?
1. 概要
ファイルとフォルダーの圧縮と解凍、およびそれらの検査と保存は、コマンドラインから実行する必要のある一般的な操作です。 これは、GUIのないサーバーで作業している場合に特に当てはまります。
このハンズオンチュートリアルでは、Unix環境でCLI(コマンドラインインターフェイス)からファイルとフォルダーを保存、圧縮、検査、および抽出するさまざまな方法を学習します。
2. 主なアーカイブ形式の調査
コマンドにジャンプする前に、最も一般的なアーカイブ形式の概要が役立つ場合があります。
2.1. Tar –最初のアーカイブツール
Tar ( T ape Ar chive)は、テープに複数のファイルを効率的に書き込むために40年以上前に誕生したユーティリティです。 圧縮せずに、同じファイル内に複数のファイルを保存するだけです。 結果として得られるアーカイブファイルは、使用、保存、転送が簡単で、tarballと呼ばれます。
2.2. ZipおよびGZip–最初の人気のある圧縮ユーティリティ
歴史を深く掘り下げることなく(たとえば、 compress を見つけることができます)、何十年もの間最も有名な圧縮ソフトウェアであるZipから始めましょう。
ディスクスペースを効率的に節約するという特定の目標を持って作成された、その最も一般的な圧縮スキーム、 deflate は、LZ77アルゴリズムの商用実装です。 archive.zip のように、Zipで圧縮されたファイルの拡張子は.zipです。
Zipの独自の性質により、 GZip は、フリーソフトウェアでdeflateを使用する代わりにUnixコミュニティによって作成されました。
GZipはファイルを圧縮するだけで、アーカイブはしません; 複数のファイルを圧縮するには、最初にtarball を作成し、 archive.tar を取得してから、GZipでtarballを圧縮し、archive.tarで終了する必要があります。 .gz。
2.3. 7-Zip –最新の効率的なツール
7-Zip は、非常に効率的で、クロスプラットフォームで、ほぼ完全にオープンソースであるため、ここ数年で大きな勢いを得た人気のツールです(独自の形式のRAR)。 LZMAおよびLZMA2アルゴリズムに基づいており、のように .7z 拡張子のファイルを作成する、独自の7z以外のさまざまなアーカイブ形式を処理できます。 archive.7z。
2.4. BZip2、Lzip、XZ、その他
何年にもわたって、多くの圧縮ツールとアーカイブ形式が登場しました。
それぞれが異なる圧縮アルゴリズムに基づいており、独自の機能があり、それらを比較することはこのチュートリアルの範囲外です。
それらの使用法は、CPU、ディスクスペース、または時間の消費量の間のトレードオフであり、特定のニーズに応じて選択する必要があります。
今のところ、 Tarを使用すると、tarball を圧縮するためにそれらの中から選択でき、GZipで見たように、BZip2ファイルは.tar.bz2で終わることを知っておいてください。 Lzipファイルは.tar.lzで終わり、XZファイルは.tar.xzで終わります。
3. ファイルとフォルダの保存
次に、圧縮せずに最大速度でファイルをアーカイブに保存する方法を見てみましょう。
3.1. Tarballの作成
次の構文で、特定のファイルとフォルダーを含むtarballを作成できます。
tar cf archive.tar file1 dir1 file2 dir2
ディレクトリトラバースは再帰的です。つまり、サブフォルダとそのファイルがデフォルトで含まれます。
現在のディレクトリにあるすべてのファイルとフォルダをアーカイブしたい場合は、次のようにするだけです。
tar cvf archive.tar *
オプションvは、要素の処理中に要素の名前を詳細に出力します。
歴史的に記号はありませんが、Tarオプションは開始ハイフンで表すこともできます。
tar -cvf archive.tar *
これは、オプションを tar コマンドに隣接しない位置に配置する場合に役立ちます(必須です)。
3.2. 非圧縮Zipアーカイブの作成
あまり一般的ではありませんが、非圧縮のZip を保存したい場合があります。これは、-0圧縮率フラグを指定することで実行できます。
zip -0 archive.zip file1 dir1 file2 dir2
Tarとは異なり、Zipはデフォルトではディレクトリをトラバースしません。 これには、-rフラグを使用する必要があります。
zip -0 -r archive.zip *
デフォルトでは冗長になり、サイレントにしたい場合に備えて-qフラグを使用できます。
3.3. 7-Zipを使用した非圧縮アーカイブの作成
7-Zipを使用すると、ドキュメントでを確認できるように、これまでに見たほぼすべての形式でアーカイブを作成できます。
使用している圧縮形式がストレージのみのオプションをサポートしている場合、次のように7-Zipを使用して非圧縮アーカイブを作成できます。
7z a -mx=0 archive.7z file1 dir1 file2 dir2
または単に:
7z a -mx=0 archive.7z *
7-Zipアーカイブには、デフォルトでサブフォルダーが含まれています。
4. ファイルとフォルダの圧縮
次に、デフォルトの圧縮設定を使用して、ファイルとフォルダを効果的に圧縮する方法を見てみましょう。
4.1. Tarballの圧縮
アーカイブ作成コマンドにzフラグを追加し、適切なアーカイブ拡張機能を使用するだけで、デフォルトの圧縮方法であるGZipを使用してtarballを簡単に圧縮できます。
tar czvf archive.tar.gz *
大文字のZは、代わりに非常に古いLZWベースのcompressソフトウェアに変わります。
tar cZvf archive.tar.gz *
他の形式は、特定のフラグで選択される場合があります。
tar cvf --xz archive.tar.xz *
tar cvf --lzip archive.tar.lz *
tar cvf --lzma archive.tar.xz *
最後に、フラグにより、Tarはファイル拡張子から圧縮メカニズムを検出できます。
tar cavf archive.tar.xz *
4.2. 圧縮されたZipアーカイブの作成
CLIからZipを作成するのは簡単です。
zip archive.zip *
前に見たように、サブフォルダーは次のものに含めることができます。
zip -r archive.zip *
4.3. 7-Zipを使用した圧縮アーカイブの作成
圧縮アーカイブを作成するための7-Zipの構文も覚えやすいです。
7z a archive.7z *
5. アーカイブの検査
5.1. Tarballの検査
tarballのコンテンツを検査する場合、構文は次のとおりです。
tar tf archive.tar
これは、圧縮されたアーカイブでも機能します。
tar tf archive.tar.gz
5.2. UnZipを使用したZipの検査
代わりに、Zipの場合は、UnZipを使用して実行できます。
unzip -v archive.zip
5.3. 7-Zipを使用したアーカイブの検査
最後に、7-Zipでは、アーカイブのコンテンツを一覧表示するための構文は次のとおりです。
7z l archive.7z
6. ファイルとフォルダの抽出
次に、アーカイブを抽出するためのさまざまなコマンドを調べてみましょう。
6.1. Tarballの解凍
tarballが圧縮されているかどうかに関係なく、次のようにファイルとフォルダーを抽出できます。
tar xvf archive.tar
tar xvf archive.tar.gz
tar xvf archive.tar.xz
現在のディレクトリとは異なるディレクトリにあるファイルを抽出する場合は、Cフラグを利用できます。
tar xvf archive.tar -C targetPath
6.2. Zipアーカイブの解凍
UnZipを使用すると、Zipアーカイブからファイルとフォルダーを抽出するのは非常に簡単な操作です。
unzip archive.zip
次のように、拡張機能を省略できます。
unzip archive
tar と同様に、dフラグを使用して別のディレクトリをターゲットにすることができます。
unzip archive -d targetPath
6.3. 7-Zipを使用したアーカイブの解凍
元のディレクトリ構造を保持しながらアーカイブを抽出するための正しい構文は次のとおりです。
7z x archive.7z
すべてのファイルとディレクトリが抽出フォルダのルートに配置されるフラット抽出が必要な場合は、eフラグを使用できます。
7z e archive.7z
同様に、7-Zipでは、ターゲットパス(間にスペースを入れない)を指定するためにoフラグが必要です。
7z x archive.7z -otargetPath
7. JAR:エッジケースの代替
前に見たケースに加えて、Javaがインストールされていて、他のアーカイブソフトウェアが利用できないマシンになってしまう可能性があります。
その場合は、JARを使用してアーカイブを抽出することも可能であることを覚えておく必要があります( J エイバ Ar チャイブ)、 このStackExchangeQ&A :
jar -xf archive.zip
8. 結論
このチュートリアルでは、最も人気のあるアーカイブソフトウェアと、アーカイブとの間でファイルやフォルダーを保存、圧縮、検査、および抽出するための一般的なコマンドについて説明しました。
多くのオプションが利用可能であり、チュートリアルの冒頭で適切にリンクされているマニュアルページで注意深く説明されています。