tar・gzip・bzip2・xz アーカイブと圧縮完全ガイド【LinuC 1.02.2】

LinuC対策

tar・gzip・bzip2・xz・dd|LinuCレベル1 アーカイブと圧縮の必修コマンド

この記事はLinuC Level1 副主題1.02.2「基本的なファイル管理の実行」のうち、tar によるアーカイブ、gzip / bzip2 / xz による単ファイル圧縮、dd によるブロック単位コピーを扱います。試験で問われるオプション弁別・形式の使い分け・実行結果の推定を、本番で迷わない粒度で整理します。

📚 LinuC Level1 完全攻略マップ(全39サブ項目)へ戻る

この記事でできるようになること
① tar の c/x/t/v/f と圧縮連携 z/j/J の弁別
② gzip/bzip2/xz の圧縮・展開・元ファイル保持(-d/-k/-c)
③ xz -l での情報表示、3形式の圧縮率と速度の順序
④ dd の if=/of=/bs=/count= と誤指定の危険性

副主題1.02.2は範囲が広く、本記事はアーカイブ・圧縮・ddに絞った解説です。一覧表示や基本ファイル操作(cp・mv・rm・mkdir・touch)は姉妹記事にまとめてあります(末尾の関連記事参照)。


目次

  1. アーカイブと圧縮は別概念
  2. tar:作成・展開・一覧のオプション
  3. tar と圧縮の連携(z/j/J)
  4. gzip / gunzip:圧縮・展開・元ファイル保持
  5. bzip2 / bunzip2:オプション体系は gzip と共通
  6. xz / unxz:高圧縮率・-l で情報表示
  7. 圧縮形式の使い分けと比較
  8. dd:ブロック単位のコピー
  9. よくある質問
  10. まとめ
  11. 模擬問題にチャレンジ(ランダム出題)

1. アーカイブと圧縮は別概念

試験で最初に押さえたいのはアーカイブと圧縮が別の処理だという点です。

概念 目的 代表コマンド
アーカイブ 複数のファイル・ディレクトリを1つのファイルにまとめる(サイズは基本変わらない) tar
圧縮 1つのファイルの中身を小さくする gzip・bzip2・xz

Linuxでは「tar でまとめてから圧縮する」2段階の考え方が基本です。.tar.gz という拡張子は「tar でまとめたファイルを gzip で圧縮した」ことを示します。

単ファイル圧縮ができるコマンド
gzip・bzip2・xz の3つ。tar 単独には圧縮機能がなく、-z/-j/-J で内部的にこれらを呼び出します。cp はコピーで圧縮には使えません。

2. tar:作成・展開・一覧のオプション

tar(tape archive)のオプションは「動作」「修飾」「アーカイブ名指定」の3グループに分けると整理しやすくなります。

グループ オプション 意味
動作(いずれか必須) -c create:新規にアーカイブを作成
-x extract:アーカイブを展開
-t list:中身を一覧表示(展開はしない)
修飾(任意) -v verbose:処理したファイルを詳細表示
アーカイブ指定(必須) -f ファイル名 対象のアーカイブファイル名を指定
# aa, bb, cc を hoge.tar にまとめる(作成)
$ tar cvf hoge.tar aa bb cc

# hoge.tar を展開
$ tar xvf hoge.tar

# hoge.tar の中身を一覧表示(展開はしない)
$ tar tvf hoge.tar

# -v を省くと詳細表示は出ないが、一覧表示自体は機能する
$ tar tf hoge.tar
-f の位置
-f の直後がアーカイブファイル名として解釈されるため、オプション列の最後に置くのが定石です。cvf/xvf/tvf のようにfが末尾に来る並びで覚えておけば安全です。

一覧表示では -v を付けても付けなくても「中身のファイル名リスト」は出ます。-v を付けるとパーミッション・所有者・サイズも併記されるという違いです。


3. tar と圧縮の連携(z/j/J)

現代の tar は圧縮コマンドを内部で呼び出せるため、1コマンドでアーカイブ化と圧縮を同時に実行できます。試験で最も問われるのがこの圧縮オプションの弁別です。

オプション 連携する圧縮コマンド 拡張子
-z(小文字z) gzip .tar.gz / .tgz
-j(小文字j) bzip2 .tar.bz2 / .tbz2
-J(大文字J) xz .tar.xz / .txz
# test ディレクトリを gzip 圧縮付きでアーカイブ
$ tar czvf test.tar.gz test

# bzip2 圧縮付き(小文字 j)
$ tar jcvf test.tar.bz2 test
$ tar cvjf test.tar.bz2 test   # オプション文字の順序は自由

# xz 圧縮付き(大文字 J)
$ tar Jcvf test.tar.xz test

# 展開は対応する文字をそのまま(順序自由・v は省略可)
$ tar zxvf test.tar.gz
$ tar xvzf test.tar.gz
$ tar jxvf test.tar.bz2
$ tar Jxvf test.tar.xz
$ tar xJf  test.tar.xz

# 圧縮形式のまま内容一覧(展開せずに)
$ tar tzvf test.tar.gz
$ tar ztvf test.tar.gz
大文字 J と小文字 j を間違えない
j(小文字)=bzip2、J(大文字)=xz。見落とすと形式違いのエラーになります。「小文字から大文字へ進むほど圧縮率が高くなる(z → j → J = gzip → bzip2 → xz)」と覚えると対応付けやすくなります。

オプション文字の順序と-の有無は自由です。tar czvf/tar zcvf/tar -czvf はすべて同じ意味になります。


4. gzip / gunzip:圧縮・展開・元ファイル保持

gzip は最も広く使われる単ファイル圧縮コマンドです。デフォルトでは元ファイルを削除して.gzに置き換える動きが特徴で、試験でもこの挙動を前提にした問題が出ます。

# configure を圧縮(configure は消え、configure.gz が残る)
$ gzip configure

# 展開(3通りすべて同じ結果)
$ gunzip configure.gz
$ gzip -d configure.gz
$ zcat configure.gz > configure   # 標準出力をリダイレクト

# 元ファイルを残して圧縮(-k=keep)
$ gzip -k configure

# 元ファイルを残して圧縮(-c で標準出力へ)
$ gzip -c configure > configure.gz

# ディレクトリ配下の各ファイルを個別に .gz 化
$ gzip -r dir
$ gzip dir/*        # シェル展開でも同じ効果(隠しファイルは含まれない点に注意)
用途 オプション
展開 -d(または gunzip)
元ファイルを残す -k(keep)
結果を標準出力へ -c(元ファイルは残る)
ディレクトリ配下を再帰圧縮 -r
圧縮率指定 -1(速い)〜-9(強い)
gzip -d test.tar.gz だけでは tar の展開は完了しない
.gz 部分が外れて test.tar が残るだけです。最終的にディレクトリを取り出すには tar xvf test.tar が別途必要になります。tar xzvf test.tar.gz を使えば1回で完結します。

gunzip は実質 gzip -d と等価のコマンドです。-r はディレクトリを1ファイルにまとめるのではなく、配下の各ファイルを個別に.gz 化する点に注意してください(まとめたい場合は tar czvf)。


5. bzip2 / bunzip2:オプション体系は gzip と共通

bzip2 は gzip より圧縮率が高く、xz より速いという中間ポジションです。オプション体系は gzip と揃えられており、-d/-k/-c が同じ意味で使えます。

# 圧縮(元ファイルは消え .bz2 が残る)
$ bzip2 configure

# 展開(3通り)
$ bunzip2 configure.bz2
$ bzip2 -d configure.bz2
$ bzcat configure.bz2 > configure

# 元ファイルを残して圧縮
$ bzip2 -k configure
$ bzip2 -c configure > configure.bz2
他形式のコマンドでは展開できない
.bz2 を gunzip で開くことはできません。同様に .gz を bunzip2、.xz を gunzip/bunzip2 では開けません。形式ごとに対応するコマンドを使う必要があります。

6. xz / unxz:高圧縮率・-l で情報表示

xz は LZMA2 アルゴリズムを採用し、3形式の中で最も高い圧縮率を持ちます。カーネルソースやディストリの ISO 配布で標準的に採用される形式です。

# 圧縮(元ファイルは消え .xz が残る)
$ xz mail_backup

# 展開(3通り)
$ unxz configure.xz
$ xz -d configure.xz
$ xzcat configure.xz > configure

# 元ファイルを残して圧縮
$ xz -k configure
$ xz -c configure > configure.xz

# 圧縮率・圧縮前/後サイズ等の情報を表示
$ xz -l configure.xz

-l(list)は xz 特有のオプションで、圧縮アーカイブの情報(元サイズ・圧縮サイズ・圧縮比など)を表示します。-t(整合性テスト)と混同しないよう注意してください。


7. 圧縮形式の使い分けと比較

3形式の特性は試験で直接問われます。「bzip2 より圧縮率が高いのは?」「3つの中で最も速いのは?」という形で出題されるため、順序を正確に覚えます。

形式 圧縮率 速度 CPU・メモリ負荷 tar オプション
gzip 低 最速 低 -z
bzip2 中 中 中 -j
xz 最高 最遅 高 -J
順序の覚え方
速さ:gzip > bzip2 > xz
圧縮率:xz > bzip2 > gzip
tar オプションも z(gzip)→ j(bzip2)→ J(xz)の順で並べると、そのまま圧縮率の昇順になります。

8. dd:ブロック単位のコピー

dd はファイル↔デバイス間、デバイス↔デバイス間のブロック単位コピーに使う低レベルコマンドです。ディスクイメージの作成、USBメモリへのOS書き込み、MBRコピーなどが代表用途です。cp/mv/tar/gzip はいずれもデバイスへのRAW書き込みに使えません。

オプション 意味
if=入力 input file:読み込み元のファイルまたはデバイス
of=出力 output file:書き込み先のファイルまたはデバイス
bs=サイズ ブロックサイズ(1回の読み書き単位、例:bs=1M)
count=N 処理するブロック数
skip=N / seek=N 入力側/出力側の先頭オフセット
status=progress 転送量・速度をリアルタイム表示
# boot.img を USB デバイス /dev/sdc に書き込む
$ dd if=boot.img of=/dev/sdc

# 1MB × 100 = 100MB だけコピー
$ dd if=/dev/zero of=zerofile bs=1M count=100

# ディスク全体のイメージを作成(進捗表示付き)
$ dd if=/dev/sda of=disk.img bs=1M status=progress
of= の指定ミスはディスク破壊につながる
of=/dev/sda のような既存デバイス指定は中身を上書きするため、実行前に lsblk などで対象を必ず確認してください。dd は「disk destroyer」と揶揄されるほど強力なコマンドです。

9. よくある質問

Q. tar cvf と tar -cvf は違う?

同じ動作です。tar は歴史的経緯からダッシュ無しの短形式オプションも受け付けます。オプション文字の順序も自由なので、tar czvf/tar zcvf/tar cvzf はすべて同じ結果になります。

Q. gzip -d file.tar.gz を実行したのに中身が取り出せない

gzip -d は .gz を解除するだけで、アーカイブ自体の展開はしません。結果として file.tar が残るので、続けて tar xvf file.tar が必要です。1コマンドで済ませるなら tar xzvf file.tar.gz を使います。

Q. 圧縮したいけれど元ファイルも残したい

gzip/bzip2/xz いずれも共通で -k(keep)か -c(標準出力へ)が使えます。-c はリダイレクトと組み合わせて gzip -c file > file.gz のように書きます。

Q. xz -l と xz -t はどう違う?

-l は情報表示(圧縮前/後サイズ・圧縮比)で、-t は整合性テストです。試験で「圧縮率を確認する」と問われたら -l、「ファイルが壊れていないか確認する」と問われたら -t です。

Q. 圧縮済みアーカイブにファイルを追加したい

圧縮済みの .tar.gz への直接追加はできません。いったん tar xzvf で展開し、ファイルを足してから tar czvf で作り直すのが定石です。無圧縮の .tar なら tar -rf で追記できます。


10. まとめ

  • アーカイブと圧縮は別概念。tar でまとめて、gzip/bzip2/xz で小さくする
  • tar 動作:-c 作成/-x 展開/-t 一覧。修飾:-v 詳細、-f アーカイブ名(末尾に置く)
  • tar 圧縮連携:-z(gzip)/-j(bzip2 小文字)/-J(xz 大文字)。オプション文字の順序は自由
  • gzip/bzip2/xz 共通オプション:-d 展開、-k 元ファイル保持、-c 標準出力。zcat/bzcat/xzcat はリダイレクトで新ファイル化可
  • gzip 固有:-r でディレクトリ配下を個別に圧縮
  • xz 固有:-l で圧縮率・サイズ情報を表示
  • 圧縮率:xz > bzip2 > gzip/速度:gzip > bzip2 > xz
  • dd:if= 入力、of= 出力、bs= ブロックサイズ、count= 回数。of= の指定ミスでディスク破壊に注意
  • 単ファイル圧縮コマンド:gzip/bzip2/xz の3つ(tar 単独は不可、cp は論外)

11. 模擬問題にチャレンジ(ランダム出題)

ここまでの内容を本試験に近い形で確認できます。問題数を選んで「出題スタート」を押すと、主題1.02.2の問題プールからランダムに出題されます。選択肢をクリック/タップすると、正誤と解説がその場で表示されます。

合格ライン目安:75%以上。1.02.2はアーカイブ・圧縮・dd以外に、一覧表示(ls)や基本ファイル操作(cp・mv・rm・mkdir・touch)も同じプールに含まれます。幅広く解きたい場合はLinuC 模擬問題ポータルから他の分野にも挑戦できます。


おすすめの教材


Linux教科書 LPICレベル1

Linux教科書 LPICレベル1 Version 5.0対応(あずき本)

LinuC/LPIC Level1 の定番参考書。tar・gzip・bzip2・xz・ddのオプションと使い分けも詳しく網羅。


Amazonで見る →

【ウズカレ式】1週間でLinuxの基本操作と管理・運用スキルが学べる講座

累計80,000人以上受講。LinuC Level1(101+102)を1週間で網羅。アーカイブ・圧縮・ddを含む基本コマンドも演習形式で習得。


Udemyで講座を見る →


関連記事

📚 LinuC Level1 完全攻略マップへ戻る
全39サブ項目のシラバス準拠マップから他の記事を探せます

副主題1.02.2は3記事で分担しています。合わせて読むと副主題全体の問題をカバーできます。

Dockerの基礎を動画で体系的に学びませんか?

実務で使う基礎だけを3時間に凝縮。環境構築から丁寧に解説しています。

Udemy Docker入門講座 クーポン割引で講座を見る →
タイトルとURLをコピーしました