tarコマンドの使い方を完全解説!Linuxでの圧縮・解凍・アーカイブの基本
生徒
「Linuxでたくさんのファイルを一つにまとめたり、サイズを小さくしたりしたいのですが、どうすればいいですか?」
先生
「それならtar(ター)コマンドが一番便利ですよ。複数のファイルを一つにまとめる『アーカイブ』や、容量を減らす『圧縮』がこれ一つでできるんです。」
生徒
「アーカイブと圧縮って違うんですか?なんだか難しそうですね……。」
先生
「イメージとしては、アーカイブは『複数の荷物を一つの段ボール箱に入れること』、圧縮は『布団圧縮袋のように空気を抜いて薄くすること』ですね。基本さえ覚えれば簡単ですよ!」
1. tarコマンドとアーカイブ・圧縮の基礎知識
Linuxの世界で欠かせないのが、このtarコマンドです。まず、初心者がつまづきやすい「アーカイブ」と「圧縮」の違いを整理しましょう。
アーカイブ(Archive)とは、バラバラにある複数のファイルやフォルダを、一つのファイルにまとめる作業のことです。例えば、旅行の写真が100枚あるときに、それを一つの「旅行アルバム」というファイルにまとめるような操作です。このまとめたファイルを「アーカイブファイル」や「tarボール」と呼びます。
一方、圧縮(Compression)とは、データの並び方を工夫して、ファイル全体のデータ容量(サイズ)を小さくすることです。メールで送るときや、サーバーの容量を節約したいときに使われます。
tarコマンドは、元々は「Tape Archiver」の略で、昔は磁気テープにデータを保存するために使われていました。現在では、ファイルを一つにまとめつつ、同時にギュッと圧縮する役割として、Linuxユーザーに最も愛用されているツールの一つです。
2. tarコマンドの基本の書き方と必須オプション
tarコマンドは、他のLinuxコマンドに比べて「オプション」の指定が少し特殊です。基本的には、ハイフン(-)を付けずにオプションを書くことも多いですが、初心者のうちはハイフンを付ける書き方で覚えても問題ありません。
最もよく使う基本的な形は以下の通りです。
tar [オプション] [作成するファイル名] [まとめたい対象]
ここで絶対に覚えておきたい「三種の神器」とも言えるオプションがあります。
- c (create):新しくアーカイブファイルを作成する。
- v (verbose):処理中のファイル名を画面に表示する(進捗が見えるので安心です)。
- f (file):アーカイブのファイル名を指定する。このオプションは必ず最後に書くルールがあります。
それでは、実際に「Documents」というフォルダを「backup.tar」という名前で一つにまとめてみましょう。
tar -cvf backup.tar Documents
Documents/
Documents/memo.txt
Documents/photo.jpg
これで、複数のファイルが入ったフォルダが、backup.tarという一つのファイルにまとまりました。
3. アーカイブを解凍(展開)して元に戻す方法
一つにまとめたファイルを、元のバラバラの状態に戻すことを「解凍」や「展開」と呼びます。このときに使う魔法のオプションが x (extract) です。
英語の「Extract(抜き出す)」の頭文字だと覚えると忘れにくいでしょう。先ほど作った backup.tar を元の場所に戻すコマンドは以下のようになります。
tar -xvf backup.tar
Documents/
Documents/memo.txt
Documents/photo.jpg
このコマンドを実行すると、現在の場所に「Documents」フォルダが中身ごと復元されます。Windowsでいう「右クリックしてすべて展開」と同じ操作を、文字だけで行っているイメージです。展開する前に、中身にどんなファイルが入っているか確認したいときは、t (list) オプションを使います。これを使えば、実際に解凍しなくても中身のリストだけを見ることができます。
4. 容量を節約!gzip形式でギュッと圧縮する
ただまとめるだけでなく、ファイルサイズを小さくしたい場合は「圧縮」機能を追加します。Linuxで最も一般的な圧縮方式は gzip(ジージップ) です。
tarコマンドでgzip圧縮を行うには、オプションに z を加えるだけです。圧縮されたファイルは、名前の最後に .tar.gz を付けるのが一般的なマナーとなっています。これを「タージーゼット」や「タードットジーゼット」と呼びます。
実際に、フォルダを圧縮しながら一つにまとめてみましょう。
tar -czvf work.tar.gz work_folder
work_folder/
work_folder/main.c
work_folder/config.h
この -czvf という組み合わせは、Linuxの操作の中で最も頻繁に登場する呪文のようなものです。c(作る)、z(圧縮する)、v(見せる)、f(ファイル名指定)と覚えておきましょう。サイズを確認すると、元のフォルダよりもずっと小さくなっているはずです。
5. 圧縮されたファイルを一気に解凍する方法
.tar.gz という拡張子がついたファイルを解凍するときは、作成時と同じように z オプションを x と組み合わせて使います。
「圧縮されているから、まず解凍して、それからアーカイブを解凍して……」と二段階の手順を踏む必要はありません。tarコマンドなら一撃で完了します。
tar -xzvf work.tar.gz
work_folder/
work_folder/main.c
work_folder/config.h
最近のLinux(モダンなバージョン)では、実は z オプションを省略しても、tarコマンドが自動的に「あ、これはgzipで圧縮されているな」と判断して適切に処理してくれることも多いです。しかし、古いシステムや厳格な環境では明示的に指定する必要があるため、初心者のうちは -xzvf としっかり書く癖をつけておくのが上達の近道です。
6. さらに強力な圧縮!bzip2とxzの使い方
gzipよりもさらに強力にファイルを小さくしたい場合に、別の圧縮方式を使うことがあります。それが bzip2 と xz です。使い方は簡単で、オプションの一文字を変えるだけです。
| 圧縮方式 | オプション | 拡張子 | 特徴 |
|---|---|---|---|
| gzip | z | .tar.gz | 一般的。処理が速い。 |
| bzip2 | j | .tar.bz2 | gzipより小さくなる。 |
| xz | J (大文字) | .tar.xz | 最強の圧縮率。時間はかかる。 |
例えば、最高ランクの圧縮率を誇る xz 形式でアーカイブを作る場合は、次のように入力します。
tar -cJvf archive.tar.xz my_data
my_data/
my_data/heavy_file.dat
大きなデータをインターネットで配布するときなどは、この xz 形式がよく使われます。相手が解凍に時間をかけても、ダウンロードサイズを極限まで減らしたいという配慮ですね。
7. 指定した場所に解凍する便利なテクニック
デフォルトでは、tarコマンドは「今自分がいる場所」にファイルを解凍します。しかし、「別のフォルダ(ディレクトリ)に中身を吐き出したい」という時もありますよね。そんな時に便利なのが -C オプションです。これは「Change directory」の略です。
例えば、ダウンロードした software.tar.gz を、一時的に /tmp というフォルダの中に展開したい場合は、次のようにルート権限(管理者権限)を借りて実行したりします。
tar -xzvf software.tar.gz -C /tmp
software/
software/install.sh
software/readme.txt
この -C オプションを使えば、わざわざ目的のフォルダに移動してからコマンドを打つ手間が省けます。特に、システム全体に関わる設定ファイルを特定の場所へ配置する際に、システム管理者(ルートユーザー)がよく使う手法です。大文字の C であることに注意しましょう。
8. 初心者が絶対に注意すべきポイントと失敗しないコツ
tarコマンドを使う上で、初心者が陥りやすい罠がいくつかあります。安全に操作するために、以下の3点は必ず意識してください。
一つ目は、「fオプションは必ず最後に書く」ことです。-f の直後にはファイル名が来ると決まっています。例えば -fvz と書いてしまうと、コンピュータは「z」という名前のアーカイブファイルを探そうとしてエラーになります。必ず -cvf や -xzvf のように、f を一番右側に置きましょう。
二つ目は、「解凍する前に中身の構造を確認する」ことです。たまに、アーカイブの中身がフォルダにまとまっておらず、解凍した瞬間にカレントディレクトリ(今いる場所)が数百個のファイルで埋め尽くされる「テロ」のような現象が起きます。これを防ぐために、まずは -tvf で中身を見て、フォルダに入っているか確認しましょう。
三つ目は、「同じ名前のファイルに注意する」ことです。解凍先に同名のファイルがあると、警告なしに上書きされてしまうことがあります。大事なデータを消してしまわないよう、解凍専用の新しいディレクトリを作ってからその中で作業するのが、プロのエンジニアも行っている安全な方法です。
9. 似たコマンド「zip」との違いと使い分け
Windowsでおなじみの「zip」形式も、Linuxで使うことができます。では、なぜわざわざ tar を使うのでしょうか?
大きな理由は「パーミッション(権限)」の保存にあります。Linuxには、ファイルごとに「誰が読み書きできるか」という大切な設定がありますが、標準的なzip形式ではこの情報を完全に保持できないことがあります。tar なら、Linux特有の所有者情報や実行権限をそのままの状態でパックできるため、プログラムの配布やバックアップには tar が最適なのです。
逆に、Windowsを使っている友達にファイルを送る場合は、相手が tar.gz を開けない可能性があるため、zip コマンドを使ってあげるのが親切でしょう。状況に合わせて、最適な道具を選べるようになるのが、Linuxマスターへの第一歩です。