本記事では「tar」「gzip」「zip/unzip」の違いと、日常で使う基本例、よくあるトラブル回避までを解説します。
tar
コマンドで複数のファイルをまとめる方法gzip
コマンドでファイルを圧縮・解凍する方法zip
とunzip
コマンドでWindowsなどとのファイル共有を行う方法- 状況に応じたコマンドの使い分け
コマンド | まとめる | 圧縮する | 特徴 |
---|---|---|---|
tar | ○ | × | 複数ファイルを1つに束ねる(アーカイブ)。他の圧縮コマンドと組み合わせて使う。 |
gzip | × | ○ | 単一ファイルの圧縮。高効率。tarと組み合わせて使うことが多い。 |
zip | ○ | ○ | まとめ+圧縮を同時に行う。Windows/Macとも親和性が高い。 |
tar
tarコマンドは、複数のファイルやディレクトリを一つのアーカイブファイルにまとめる(アーカイブ化)ために使われます。圧縮機能は持っていませんが、他の圧縮コマンドと組み合わせて使われることがほとんどです。
この状況で困ったらコレ!
「複数のログファイルをまとめて、別のサーバーに転送したい」
# logsディレクトリ内の全てのファイルをlog_archive.tarという一つのファイルにまとめる
tar -cvf log_archive.tar logs/
オプション | 意味 |
---|---|
-c |
アーカイブを作成します (create) |
-v |
処理中のファイルを詳細表示します (verbose) |
-f |
アーカイブファイル名を指定します (file) |
-x |
アーカイブを展開します (extract) |
-z |
gzip形式で圧縮・解凍します。-zcvf や -zxvf のように使います |
-j |
bzip2形式で圧縮・解凍します(より高圧縮) |
-J |
xz形式で圧縮・解凍します(さらに高圧縮) |
アーカイブを展開する
# log_archive.tarを展開する
tar -xvf log_archive.tar
ちょっと便利な小ネタ:中身だけ一覧表示
アーカイブを解凍する前に、その中身だけを確認したい場合に便利です。
# tar.gz形式のアーカイブの中身を解凍せずに一覧表示
tar -tzvf archive.tar.gz
ちょっと便利な小ネタ:アーカイブから一部だけ展開
巨大なアーカイブから特定のファイルだけが必要な場合に、全てを解凍せずに必要なファイルだけを抜き出すことができます。
# archive.tarからfile1.txtとfile2.logだけを解凍する
tar -xvf archive.tar file1.txt file2.log
よくあるエラー・注意点
tar: Cowardly refusing to create an empty archive
このエラーは、tar
コマンドで指定したファイルやディレクトリが存在しない場合に発生します。パスが正しいか、ファイル/ディレクトリが存在するか確認しましょう。
gzip
とgunzip
gzipは、単一のファイルを高効率で圧縮するコマンドです。圧縮すると元のファイルは削除され、.gz
という拡張子のファイルが生成されます。解凍にはgunzipまたはgzip -d
を使用します。
この状況で困ったらコレ!
「容量の大きいログファイルを圧縮してディスク容量を節約したい」
# large_log_file.txtを圧縮し、large_log_file.txt.gzを作成する
gzip large_log_file.txt
圧縮されたファイルを解凍する
# large_log_file.txt.gzを解凍し、large_log_file.txtを復元する
gunzip large_log_file.txt.gz
# または
gzip -d large_log_file.txt.gz
ちょっと便利な小ネタ:圧縮率の指定
gzip
は-1
から-9
までのオプションで圧縮率を指定できます。数字が大きいほど圧縮率は高まりますが、処理に時間がかかります。
# bigfile.txtを最大圧縮率で圧縮する(時間がかかる場合がある)
gzip -9 bigfile.txt
tarとgzipを組み合わせて使う
tar
とgzip
を組み合わせることで、複数のファイルをまとめて圧縮することができます。これがよく見かける.tar.gz
や.tgz
形式のファイルです。
# current_dataディレクトリをまとめて圧縮する (tarでまとめてgzipで圧縮)
tar -zcvf current_data.tar.gz current_data/
# current_data.tar.gzを解凍する
tar -zxvf current_data.tar.gz
zip
とunzip
zipコマンドは、複数のファイルやディレクトリを圧縮し、Windows環境などでも標準的に扱える.zip
形式のファイルを作成します。unzipコマンドで解凍できます。
この状況で困ったらコレ!
「Linux上のファイルをWindowsユーザーに送るために、一般的な圧縮形式でまとめたい」
# docsディレクトリ内の全てのファイルをmy_documents.zipに圧縮する
zip -r my_documents.zip docs/
オプション | 意味 |
---|---|
-r |
ディレクトリを再帰的に圧縮します (recursive) |
zipファイルを解凍する
# my_documents.zipを現在のディレクトリに解凍する
unzip my_documents.zip
ちょっと便利な小ネタ:zipファイルの中身を確認
解凍する前に、zipファイルに含まれるファイル一覧を確認できます。
# my_documents.zipの中身を解凍せずに一覧表示
unzip -l my_documents.zip
ちょっと便利な小ネタ:パスワード付き圧縮
セキュリティを考慮し、zipファイルにパスワードを設定して圧縮することも可能です。
# folderディレクトリをyourpasswordで保護されたsecure.zipに圧縮する
zip -r -P yourpassword secure.zip folder/
よくあるエラー・注意点
zip/unzipコマンドは、一部のLinuxディストリビューションではデフォルトでインストールされていない場合があります。その場合は、各ディストリビューションのパッケージマネージャを使ってインストールが必要です。
# Debian/Ubuntu系の場合
sudo apt install zip unzip
# RHEL/CentOS系の場合
sudo yum install zip unzip
# または (CentOS 8以降、Fedoraなど)
sudo dnf install zip unzip
Linuxにおけるファイルの圧縮・解凍は、ディスク容量の節約やファイル転送の効率化に不可欠な操作です。
- tar: 複数のファイルやディレクトリをまとめるアーカイブ化に利用し、他の圧縮コマンドと組み合わせて使います。
- gzip: 単一ファイルを高効率で圧縮・解凍し、
.tar
ファイルと組み合わせて.tar.gz
形式でよく使われます。 - zip/unzip: 汎用的な
.zip
形式を作成・解凍するため、異なるOS間でのファイル共有に便利です。
これらのコマンドを使いこなすことで、日々のLinux管理作業がよりスムーズになるでしょう。
この記事が、ファイルの圧縮・解凍についての理解を深める一助となれば幸いです。
ご覧いただきありがとうございました。