Linuxでファイルを圧縮するときに使える主な圧縮形式(zip・gzip・bzip2・xz・zstd)の違いと、tar・gzip・zipコマンドの使い方を、GNU tarなどの公式マニュアルをもとにコマンド例つきで紹介します。
- Linuxでファイルを圧縮するコマンドと、圧縮形式の違いを知りたい方
- ディレクトリごと tar.gz や zip にまとめる方法を知りたい方
- tar.gz などの圧縮ファイルを展開する方法を確認したい方
Linuxでファイルを圧縮するときは、複数のファイルやディレクトリをまとめるならtarに圧縮オプションを付けた.tar.gz、WindowsやmacOSの相手に渡すならzipが定番です。1つのファイルだけを圧縮するならgzipでも足ります。この記事では、どのコマンドをどう使い分けるかを、圧縮形式の違いとコマンド例で説明します。
Linuxのファイル圧縮で使われる主な圧縮形式
「圧縮形式」は、データを圧縮するための様々な方法やフォーマットを指す言葉です。以下はいくつかの主な圧縮形式の例です:
- ZIP形式: ファイルやフォルダを圧縮するための一般的な形式で、Windowsや多くの他のプラットフォームでサポートされています。
- RAR形式: 圧縮とファイル分割のための形式で、WinRARなどのソフトウェアで使用されています。
- 7z形式: 7-Zipなどのソフトウェアで利用される形式で、高い圧縮率を提供することが特徴です。
- GZIP形式: UnixやLinuxシステムでよく使われ、単一のファイルを圧縮します。通常、拡張子は.gzです。
- TAR形式: ファイルやディレクトリを単一のアーカイブにまとめ、圧縮しない形式です。通常、GZIPやBZIP2と組み合わせて使われます。
- BZIP2形式: GZIPと同様にファイルを圧縮するが、通常、より高い圧縮率を提供します。
これらの圧縮形式は、ファイルサイズを減らし、データを効率的に転送・保存するために使用されます。どの形式を選択するかは、使用するソフトウェアやユースケースによって異なります。
Linuxコマンドで使える圧縮形式ファイル
tarコマンドは、複数のファイルやディレクトリを一つのアーカイブファイルにまとめるコマンドです。圧縮のオプションを組み合わせると、.tar.gz、.tar.bz2、.tar.xz、.tar.zst などの圧縮されたアーカイブファイルを作れます。対応する圧縮形式は、GNU tarの公式マニュアルにまとめられています。
アーカイブファイルを作成してから、別のコマンドで圧縮する場合は、まずtarでまとめ、そのあと下の3つのうち、使いたい圧縮形式のコマンドを1つだけ実行します。
$ tar -cvf アーカイブファイル名.tar ファイルやディレクトリ
$ gzip アーカイブファイル名.tar
$ bzip2 アーカイブファイル名.tar
$ xz アーカイブファイル名.targzipは、既定では元のファイルを削除して、.gzのファイルに置き換えます。元のファイルを残したいときは、-kオプションを付けます。
Ubuntuで利用できる主な圧縮形式の違いは、次のとおりです。
| 形式 | 拡張子 | 特徴 | アーカイブ機能 |
|---|---|---|---|
| ZIP | .zip | 様々なOSでサポートされている | ○ |
| 7Z | .7z | 圧縮率が高い | ○ |
| gzip | .gz | Linuxで標準で利用されている形式 | × |
| bzip2 | .bz2 | gzipより圧縮率が高い | × |
| xz | .xz | 圧縮率が高い | × |
| zstd | .zst | zlib(gzipやzipと同じ系統の圧縮方式)と同等以上の圧縮率を、高速で実現する | × |
「アーカイブ機能」が×の形式(gzip・bzip2・xz・zstd)は、複数のファイルを1つにまとめられません。複数のファイルやディレクトリを圧縮するときは、tarでまとめてから圧縮します。
tarとzipの違いは、役割の分け方です。tarは、ファイルをまとめる(アーカイブする)コマンドで、圧縮はgzipなどの圧縮形式に任せます。zipは、1つのコマンドでまとめる処理と圧縮を同時に行い、WindowsやmacOSでも展開できます。
Linuxでファイルを圧縮する方法
ここでは、gzip・tar・zipの順に、圧縮と展開のコマンドを紹介します。コマンド例の先頭の「$」は入力の目印なので、実際には入力しません。
gzipで1つのファイルを圧縮する
gzipは、ファイルを1つずつ圧縮するコマンドです。複数のファイルを1つにまとめる機能はないため、複数のファイルやディレクトリは、次のtarと組み合わせます。
$ gzip test.txt実行するとtest.txt.gzができ、元のtest.txtは置き換わります。元のファイルを残すときは、-kを付けます。
$ gzip -k test.txt展開するときは、gunzipかgzip -dを使います。
$ gunzip test.txt.gzアーカイブの作成(ファイルやディレクトリをまとめる)
tar -cvf アーカイブファイル名.tar ファイル1 ファイル2 ディレクトリ1 …
- -c: アーカイブの作成(create)
- -v: 詳細な情報を表示(verbose)
- -f: アーカイブファイル名の指定
例:
tar -cvf my_archive.tar file1.txt folder1アーカイブの中身を確認するだけで、展開はしたくないときは、-tを使います。
tar -tvf my_archive.tarアーカイブの展開
tar -xvf アーカイブファイル名.tar
- -x: アーカイブの展開(extract)
例:
tar -xvf my_archive.tar圧縮を伴うアーカイブの作成(tar + gzip)
tar -czvf アーカイブファイル名.tar.gz ファイル1 ファイル2 ディレクトリ1 …
- -z: gzipで圧縮
例:
tar -czvf my_archive.tar.gz file1.txt folder1gzip以外の圧縮形式を使うときは、-zの代わりに、次のオプションを指定します。圧縮に使うコマンド(bzip2・xz・zstdなど)が、あらかじめインストールされている必要があります。
| 圧縮形式 | オプション | 拡張子の例 |
|---|---|---|
| gzip | -z | .tar.gz |
| bzip2 | -j | .tar.bz2 |
| xz | -J | .tar.xz |
| zstd | –zstd | .tar.zst |
たとえば、xzで圧縮するときは、次のようにします。
tar -cvJf my_archive.tar.xz file1.txt folder1圧縮を伴うアーカイブの展開(tar + gzip)
tar -xzvf アーカイブファイル名.tar.gzGNU tarは、ファイルから読み込むときに圧縮形式を自動で判別します。そのため、-zを付けずにtar -xvf アーカイブファイル名.tar.gzとしても展開できます。
zipでディレクトリごと圧縮する
zipは、ファイルやディレクトリを1つのコマンドでまとめて圧縮します。ディレクトリを圧縮するときは、-rを付けると、ディレクトリの中のファイルとサブディレクトリもまとめて圧縮されます。
$ zip -r アーカイブファイル名.zip ディレクトリ名展開するときは、unzipを使います。展開先のディレクトリを指定するときは、-dを付けます。
$ unzip アーカイブファイル名.zip
$ unzip アーカイブファイル名.zip -d 展開先ディレクトリzipやunzipがインストールされていないときは、sudo apt install zip unzipで追加できます。
これらのコマンドは、UnixやLinuxのターミナルで使用されます。オプションやファイル名は環境や具体的な使用ケースによって変わる可能性があります。man tarコマンドを使って、より詳細な情報を得ることができます。
圧縮形式を用いたファイル転送方法については以下の記事を参照ください。

まとめ
Linuxでファイルを圧縮するときは、まとめて圧縮したいなら tar、他のOSとやり取りするなら zip を使うのが基本です。
- ✔ tarはファイルをまとめるコマンドで、
-z・-j・-J・--zstdを付けると gzip・bzip2・xz・zstd で圧縮できます - ✔ gzipは1つのファイルを圧縮し、複数のファイルやディレクトリはtarと組み合わせます
- ✔ zipは
zip -rでディレクトリごと圧縮でき、unzipで展開します
まずは、手元のディレクトリでtar -czvfかzip -rを試してみてください。
関連リンク





コメント