Linuxの圧縮・解凍・アーカイブとは?違いと使い分けを初心者向けに完全ガイド
生徒
「Linuxで複数のファイルをまとめて1つにしたり、サイズを小さくしたりしたいのですが、やり方がわかりません。WindowsのZIPファイルみたいなことはできますか?」
先生
「もちろんです。Linuxには『アーカイブ』と『圧縮』という2つの考え方があるんですよ。これらを組み合わせることで、WindowsのZIPと同じような操作が可能です。」
生徒
「アーカイブと圧縮……。何が違うんでしょうか?難しそうに聞こえます。」
先生
「実はとてもシンプルです。アーカイブは『箱詰め』、圧縮は『掃除機で空気を抜く』イメージですね。まずは基本的な違いから、丁寧に説明していきますね。」
1. アーカイブと圧縮の根本的な違い
パソコン初心者の方が最初につまずきやすいのが、「アーカイブ」と「圧縮」という言葉の違いです。Linuxを使いこなすためには、この2つの役割をしっかり分けて考える必要があります。
アーカイブ(Archive)とは、複数のファイルやフォルダ(ディレクトリ)を、バラバラにならないように1つの「まとまり」にすることです。例えるなら、引っ越しの時にたくさんの荷物を「ダンボール箱」に詰める作業のようなものです。この時、中身の重さや大きさは変わりません。ただ、1つの箱に入っているため、持ち運び(送受信)がしやすくなります。Linuxでは、主にtarという命令(コマンド)を使います。
一方で、圧縮(Compression)とは、データの無駄な部分を計算で削り、ファイルそのものの「容量(サイズ)」を小さくすることです。例えるなら、布団を「圧縮袋」に入れて、掃除機で空気を抜いて薄くする作業です。これを行うことで、ハードディスクの節約になったり、インターネットでの送信時間が短くなったりします。Linuxでは、gzipやbzip2、xzといったコマンドが使われます。
WindowsやMacでは、この「箱詰め」と「空気抜き」を同時に行うZIP(ジップ)形式が一般的ですが、Linuxではこれらを別々のステップとして、あるいは組み合わせて行うのが基本のスタイルです。
2. なぜアーカイブと圧縮が必要なのか?
なぜ、わざわざ手間をかけてファイルをまとめたり小さくしたりするのでしょうか。それには3つの大きな理由があります。
1つ目は、ファイルの整理と管理です。プロジェクトの資料が100個のファイルに分かれているとき、そのままメールで送るのは大変ですし、受け取る側も困ってしまいます。1つのアーカイブファイルにまとめておけば、受け渡しが非常にスムーズになります。
2つ目は、通信時間の短縮です。インターネットを通じてファイルを送る際、データの容量が大きければ大きいほど時間がかかります。圧縮してサイズを半分にできれば、送信にかかる時間も約半分になります。これは、サーバーのバックアップデータを遠隔地に保存するときなどに非常に重要です。
3つ目は、ディスク容量の節約です。パソコンやサーバーの保存スペースには限りがあります。めったに見ない古いログファイルや資料を圧縮して保存しておくことで、空き容量を増やすことができます。
3. tarコマンドでアーカイブを作成する
まずは、複数のファイルを1つにまとめる「アーカイブ」の操作を学びましょう。Linuxで最もよく使われるのがtar(ター)コマンドです。これは「Tape Archiver」の略で、昔は磁気テープにデータを記録するために使われていた名残です。
例えば、photo1.jpgとphoto2.jpgという2つのファイルを、all_photos.tarという1つの箱にまとめる場合は次のように入力します。
tar -cvf all_photos.tar photo1.jpg photo2.jpg
photo1.jpg
photo2.jpg
ここで使っているオプションの意味を解説します。
- -c (create):新しくアーカイブファイルを作成するという意味です。
- -v (verbose):作業の進行状況を画面に表示するという意味です。「今これを処理していますよ」と教えてくれます。
- -f (file):作成するファイルの名前を指定するという意味です。
これで、2つのファイルが1つのall_photos.tarにまとまりました。この時点ではまだ「圧縮」はされていないので、ファイルサイズは元の2つの合計とほぼ同じです。
4. gzipコマンドでファイルを圧縮する
次に、1つになったアーカイブファイルを「圧縮」してサイズを小さくしてみましょう。Linuxで最も標準的な圧縮形式はgzip(ジー・ジップ)です。
先ほど作ったall_photos.tarを圧縮するには、以下のコマンドを実行します。
gzip all_photos.tar
ls
all_photos.tar.gz
コマンドを実行すると、元のファイル名の後ろに.gzという拡張子が付き、ファイルサイズが小さくなります。Linuxの世界でよく見かける.tar.gzというファイルは、「tarでまとめてからgzipで圧縮したもの」という意味なのです。
なお、gzipコマンドは元のファイルを消して、圧縮後のファイルに置き換えるという性質があります。もし元のファイルを残したい場合は、別の設定が必要になりますが、基本はこの動きを覚えておきましょう。
5. アーカイブと圧縮を一気に行う方法
「まとめる」と「小さくする」を別々にやるのは面倒ですよね。実はtarコマンドには、アーカイブと圧縮を同時に行う便利なオプションがあります。実務ではこちらを使うことがほとんどです。
gzip形式で圧縮しながらアーカイブを作るには、-zというオプションを追加します。
tar -czvf backup.tar.gz Documents/
Documents/
Documents/memo.txt
Documents/report.docx
このコマンド1つで、Documentsというフォルダの中身をすべてまとめて、さらに圧縮まで完了したbackup.tar.gzができあがります。非常に効率的ですね。オプションの順番は-czvfのように繋げて書いても大丈夫です。
6. 圧縮されたファイルを「解凍」して元に戻す
送られてきた圧縮ファイルや、バックアップしたファイルを元の状態に戻すことを「解凍」または「展開」と呼びます。専門用語では「展開」と呼ぶことが多いですが、初心者の方は「解凍」の方がイメージしやすいかもしれません。まさに凍らせて保存したものを、再び使える状態に溶かすイメージです。
.tar.gzファイルを解凍するには、tarコマンドに-x(extract:取り出す)オプションを使います。
tar -xzvf backup.tar.gz
Documents/
Documents/memo.txt
Documents/report.docx
これで、圧縮されていたファイルが現在の場所に元通りに現れます。-xは「抽出する」、-zは「gzip形式を扱う」、-fは「対象のファイルを指定する」という意味です。基本的には、作成した時のオプションのcをxに変えるだけと覚えれば簡単です。
7. 他の圧縮形式(bzip2, xz)との使い分け
Linuxにはgzip以外にも、いくつかの圧縮形式があります。主なものはbzip2とxzです。これらは何が違うのでしょうか?
大きな違いは「圧縮率(どれだけ小さくなるか)」と「処理時間(どれだけ時間がかかるか)」のバランスです。表で比較してみましょう。
| 形式 | 拡張子 | 圧縮率 | 処理スピード | 特徴 |
|---|---|---|---|---|
| gzip | .gz | 普通 | 非常に速い | 最も一般的で互換性が高い |
| bzip2 | .bz2 | 高い | 遅い | gzipより小さくなるが時間がかかる |
| xz | .xz | 非常に高い | かなり遅い | 最新の形式。サイズを最小にしたい時に使う |
普段使いには、バランスの良いgzipがおすすめです。一方で、非常に大きなデータを少しでも小さくして保存したい場合はxzを選択します。tarコマンドでこれらを使う場合は、オプションを-j(bzip2用)や-J(xz用)に変えるだけで対応できます。
8. 管理者権限(root)でのアーカイブ操作
システムの重要な設定ファイルや、自分以外のユーザーのファイルをアーカイブ・圧縮したい場合は、管理者権限(rootユーザー)が必要になることがあります。権限がないと「許可がありません(Permission denied)」というエラーが出て、ファイルをまとめることができません。
例えば、システムの設定が保存されている/etcディレクトリをバックアップする場合は、コマンドの前にsudoをつけて実行します。
sudo tar -czvf etc_backup.tar.gz /etc
[sudo] password for user:
tar: Removing leading `/' from member names
/etc/hosts
/etc/passwd
...
このように、システム全体の管理に関わる操作を行うときは、自分が管理者であることを証明して実行する必要があります。初心者の方は、自分のホームディレクトリ(自分の書類などが置いてある場所)以外の操作をするときは注意しましょう。
9. アーカイブの中身を解凍せずに確認する方法
「この圧縮ファイル、中身は何が入っているんだろう?」と思ったとき、わざわざ解凍するのは面倒ですよね。そんな時は、中身の一覧だけを表示する機能が便利です。
tarコマンドに-t(list)オプションを使うと、解凍せずに中のファイル名だけをチェックできます。
tar -tf backup.tar.gz
Documents/
Documents/memo.txt
Documents/report.docx
このコマンドを使えば、間違えて巨大なファイルを解凍してディスクをいっぱいにしてしまう失敗を防ぐことができます。仕事で他の方から送られてきたアーカイブを開く前に、まずこのコマンドで内容を確認する癖をつけておくと、デキるエンジニアへの第一歩です。
10. 初心者が覚えておくべき用語集
最後に、この記事に出てきた重要な用語を整理しておきます。これらを理解しておけば、Linuxの解説本やサイトを読むのがずっと楽になりますよ。
- ディレクトリ:Windowsでいう「フォルダ」のことです。ファイルを分類して入れる入れ物です。
- コマンド:コンピューターへの「命令」のことです。ターミナルに文字を打ち込んで実行します。
- オプション:コマンドの動作を少し変えるための「設定」です。
-cや-zなどの記号がそれにあたります。 - 拡張子:ファイル名の最後につく「.txt」や「.tar.gz」などの文字です。ファイルの種類を表しています。
- カレントディレクトリ:現在自分が操作対象としている「今いる場所」のことです。コマンドで
.と表現されることもあります。 - ターミナル:文字だけでコンピューターを操作するための黒い画面のことです。「端末」とも呼ばれます。
Linuxの操作は最初は難しく感じるかもしれませんが、アーカイブや圧縮の仕組みは現実世界の「箱詰め」と同じです。コマンドの呪文も、何度も使っているうちに自然と指が覚えていきますよ。まずは自分のファイルを1つにまとめる練習から始めてみてくださいね。