Linuxのtarコマンドでディレクトリをアーカイブ・圧縮する方法を徹底解説!
生徒
「Linuxでたくさんのファイルを一つにまとめたり、サイズを小さくしたりするにはどうすればいいですか?」
先生
「それなら『tar(ター)』というコマンドを使うのが一般的ですよ。複数のファイルを一つの『アーカイブ』という塊にまとめることができるんです。」
生徒
「アーカイブ……?聞き慣れない言葉ですね。Windowsでいう『ZIP(ジップ)』みたいなものですか?」
先生
「その通り!WindowsのZIPファイルと同じように、バラバラの書類を一冊のファイルに綴じるイメージですね。さらに圧縮して容量を節約することもできます。さっそく使い方を見ていきましょう!」
1. アーカイブと圧縮の違いを知ろう
Linuxを触り始めたばかりの方が最初につまずきやすいのが、「アーカイブ」と「圧縮」という二つの言葉の違いです。これらは似ていますが、役割が少し異なります。
アーカイブとは、複数のファイルやディレクトリ(フォルダのこと)を、中身の構造を保ったまま「一つのファイルにまとめること」を指します。たとえるなら、バラバラのプリントをバインダーに綴じるような作業です。これだけでは、ファイル全体の合計サイズはほとんど変わりません。
一方で圧縮とは、専用の計算式を使ってデータの無駄を省き、「ファイルサイズを小さくすること」を指します。布団圧縮袋で布団を小さくするようなイメージです。
Linuxのtarコマンドは、基本的には「まとめる(アーカイブ)」ための道具ですが、オプションを追加することで「まとめると同時に小さくする(圧縮)」ことも可能になります。この「ひとまとめにしたファイル」のことをアーカイブファイル、あるいは親しみを込めてタールボールと呼んだりします。
2. tarコマンドの基本とオプションの覚え方
tarコマンドを使うときは、コンピュータに「何をしたいか」を伝えるために「オプション」という命令を組み合わせます。初心者の方がまず覚えるべき基本のアルファベットは以下の4つです。
- c (create):新しくアーカイブファイルを作成する。
- v (verbose):処理中のファイル名を表示する(何が起きているか見えるので安心です)。
- f (file):アーカイブのファイル名を指定する。
- x (extract):アーカイブされたファイルを元に戻す(解凍・展開)。
これらを組み合わせて使います。たとえば、新しくファイルを作るときは -cvf というセットで使うのが定番です。呪文のように「シー・ブイ・エフ」と覚えてしまいましょう。
3. ディレクトリを一つにまとめる(アーカイブ作成)
それでは実際に、ディレクトリを一つにまとめてみましょう。ここでは「photos」という名前のディレクトリを、「backup.tar」という名前の一つのファイルにまとめてみます。
実行する場所は、対象のディレクトリが見える場所(カレントディレクトリ)です。コマンドを実行すると、元のディレクトリはそのままで、新しくアーカイブファイルが出来上がります。
tar -cvf backup.tar photos
photos/
photos/cat.jpg
photos/dog.jpg
このコマンドの構造を分解すると、tar [オプション] [作りたいファイル名] [まとめたい対象] となっています。-cvf オプションのおかげで、画面にはどのファイルが処理されたかが一覧で表示されます。これで、バラバラだった写真ファイルが backup.tar という一つのファイルにまとまりました。
4. まとめたファイルを元に戻す(展開・解凍)
一つにまとめた .tar ファイルを、元のディレクトリの状態に戻すことを「展開」や「解凍」と呼びます。このときは c(作る)の代わりに x(取り出す)を使います。
例えば、先ほど作った backup.tar を元のバラバラの状態に戻したいときは、以下のコマンドを入力します。
tar -xvf backup.tar
photos/
photos/cat.jpg
photos/dog.jpg
実行すると、現在の場所に「photos」ディレクトリが復元されます。もし同じ名前のディレクトリが既にある場合は、中身が上書きされることがあるので注意が必要です。作業前に ls コマンドで現在の状況を確認する癖をつけておくと、初心者のうちは大きなミスを防げます。
5. ギュッと小さくしてまとめる(gzip圧縮)
ただまとめるだけでなく、インターネットで送る際やディスク容量を節約したいときには「圧縮」を組み合わせます。最もよく使われるのが gzip(ジー・ジップ)という方式です。この方式を使うには、オプションに z を追加します。
圧縮されたファイルの拡張子(ファイル名の後ろにつく印)は、慣習として .tar.gz にします。
tar -czvf backup.tar.gz photos
photos/
photos/cat.jpg
photos/dog.jpg
この -czvf は、Linuxの世界では毎日使われるほど有名な呪文です。z を足すだけで、ファイルサイズがグッと小さくなります。画像ファイルなどはもともと圧縮されているのであまり変わりませんが、テキストファイルやプログラムのソースコードなどは驚くほど小さくなります。
6. 圧縮されたファイルを展開する方法
拡張子が .tar.gz になっているファイルを元の状態に戻すときも、作成時と同じように z オプションを添えるのが基本です。ただし、最近の tar コマンドは賢いので、z を付け忘れても自動で判断してくれることが多いですが、基本に忠実に -xzvf と入力しましょう。
tar -xzvf backup.tar.gz
photos/
photos/cat.jpg
photos/dog.jpg
これで、圧縮されて一塊になっていたファイルが魔法のように元のディレクトリ構造で現れます。プログラミングの現場では、ライブラリやツールをインストールする際に、この形式で配布されているものをダウンロードして展開する作業が頻繁に発生します。
7. 中身だけを確認する方法(展開せずに見る)
「この大きなアーカイブファイルの中に、目当てのファイルが入っているかな?」と気になったとき、いちいち展開するのは面倒ですよね。そんなときは t オプションを使います。t は「list(リスト)」の略だと考えると覚えやすいでしょう。
tar -tvf backup.tar.gz
drwxr-xr-x user/group 0 2026-01-09 10:00 photos/
-rw-r--r-- user/group 45210 2026-01-09 10:00 photos/cat.jpg
-rw-r--r-- user/group 51200 2026-01-09 10:00 photos/dog.jpg
このコマンドを実行しても、ファイルは展開されません。あくまで「中身の目録」を表示するだけなので、ハードディスクの容量を消費することなく中身をチェックできます。非常にスマートな確認方法です。
8. より高い圧縮率を求めるなら「j」オプション
「もっともっとファイルを小さくしたい!」という場合には、bzip2(ビー・ジップ・ツー)という方式を使います。これは gzip よりも計算に時間はかかりますが、より強力にサイズを縮小できるのが特徴です。この場合はオプションに j を使い、拡張子は .tar.bz2 とします。
tar -cjvf backup.tar.bz2 photos
photos/
photos/cat.jpg
photos/dog.jpg
展開するときは、先ほどの z を j に変えて -xjvf とすればOKです。Linuxでは、用途や好みに合わせてこれらの圧縮方式を使い分けます。初心者の方は、まずは汎用性の高い z (gzip) からマスターして、余裕があれば j (bzip2) を覚えるのが上達の近道です。
9. ルート権限でアーカイブを扱う際の注意点
システムに関わる重要な設定ファイルなどをアーカイブする場合、権限(パーミッション)の問題で一般ユーザーでは操作できないことがあります。その場合は sudo を使うか、ルートユーザー(管理者)になって操作を行います。ルートユーザーで実行すると、プロンプト(入力待ちの記号)が $ から # に変わります。
tar -cvf config_backup.tar /etc/nginx
tar: Removing leading `/' from member names
/etc/nginx/
/etc/nginx/nginx.conf
ルート権限での操作は非常に強力です。誤って大切なシステムファイルを削除したり上書きしたりしないよう、慎重にコマンドを打ち込みましょう。アーカイブを作る際に出てくる「Removing leading `/`」というメッセージは、「安全のためにルートディレクトリを示すスラッシュを取り除きましたよ」という親切な警告なので、初心者のうちは気にしすぎなくても大丈夫です。