tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)LinuxtipsLinuxtips, ディレクトリ・ファイル操作 > tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧
「ダウンロードしたソースコードが .tar.bz2 で、解凍の仕方が分からない」
「tar.gz と tar.bz2、どちらで圧縮すればいいの?」
Linuxでソフトウェアのインストールやバックアップを行う際、避けては通れないのがアーカイブファイルの扱いです。

この記事では、tar.bz2 ファイルの解凍(展開)と圧縮の方法を解説します。基本的なコマンドはもちろん、tar.gz との違いや、中身の確認方法、特定ファイルだけの取り出し、トラブル対処まで、実務で困らない知識をまとめました。

1. tar.bz2 と tar.gz の違い

どちらも「tarでまとめてから圧縮する」という仕組みは同じですが、使っている圧縮アルゴリズムが異なります。

項目 tar.gz(gzip) tar.bz2(bzip2)
圧縮率 標準的 gzipより高い(ファイルが小さくなる)
圧縮・解凍速度 速い gzipより遅い
tarオプション tar zxvf(z を指定) tar jxvf(j を指定)
拡張子 .tar.gz / .tgz .tar.bz2 / .tbz2
実務での使い分けの目安として、日常的なバックアップなど速度を優先する場面では tar.gz、配布用のソースコードなどサイズを小さくしたい場面では tar.bz2 が選ばれる傾向にあります。

2. tar.bz2ファイルを解凍(展開)する

基本の解凍コマンド: tar jxvf

tar.bz2 ファイルを解凍して展開するには、tarコマンドに -j(bzip2指定)オプションを付けて実行します。

# tar jxvf httpd-2.4.62.tar.bz2 httpd-2.4.62/ httpd-2.4.62/ABOUT_APACHE httpd-2.4.62/acinclude.m4 httpd-2.4.62/build/ ...(以下省略)

各オプションの意味は以下の通りです。

j :bzip2形式の圧縮・解凍を指定する
x :アーカイブからファイルを取り出す(extract)
v :処理中のファイル名を表示する(verbose)
f :アーカイブファイル名を指定する(fの直後にファイル名が必要

【注意】fオプションの位置に気をつける

f オプションは「直後に来る文字列をファイル名として解釈する」という仕様です。そのため、tar -jxfv と書くと、v をファイル名と解釈してエラーになります。

# tar -jxfv httpd-2.4.62.tar.bz2 tar: v: Cannot open: No such file or directory ← vをファイル名と解釈してしまう

f は必ずオプションの最後に置くか、tar -j -x -v -f ファイル名 のように分けて書くのが安全です。

解凍先のディレクトリを指定する(-C)

デフォルトではカレントディレクトリに展開されますが、-C オプションで展開先を指定できます。

# tar jxvf httpd-2.4.62.tar.bz2 -C /usr/local/src/

展開せずに中身だけ確認する(jtf)

ダウンロードしたファイルをいきなり展開するのではなく、まず中身を確認したい場面は多々あります。x(取り出し)の代わりに t(一覧表示)を使います。

# tar jtf httpd-2.4.62.tar.bz2 httpd-2.4.62/ httpd-2.4.62/ABOUT_APACHE httpd-2.4.62/acinclude.m4 ...(以下省略)

本番環境では、展開前に中身を確認して想定通りのディレクトリ構造かチェックするのが鉄則です。

特定のファイルだけ取り出す

アーカイブ全体ではなく、特定のファイルだけを取り出すこともできます。先に tar jtf で確認したパスを指定します。

# tar jxvf httpd-2.4.62.tar.bz2 httpd-2.4.62/README

3. tar.bz2ファイルを作成(圧縮)する

基本の圧縮コマンド: tar jcvf

ディレクトリやファイルをまとめて tar.bz2 形式で圧縮するには、x(取り出し)の代わりに c(作成:create)を使います。

# tar jcvf backup.tar.bz2 /home/user/project/

特定のファイルやディレクトリを除外して圧縮する(--exclude)

ログファイルやキャッシュなど、バックアップに含めたくないファイルがある場合は --exclude オプションを使います。

# tar jcvf backup.tar.bz2 /home/user/project/ --exclude="*.log" --exclude="cache/"

4. bzip2コマンド単体での圧縮・解凍

tarを使わず、単一ファイルを bzip2 形式で圧縮・解凍することもできます。

圧縮:bzip2 ファイル名(元ファイルは削除され .bz2 が作られる)
解凍:bzip2 -d ファイル名.bz2 または bunzip2 ファイル名.bz2
元ファイルを残して圧縮:bzip2 -k ファイル名

# bzip2 access.log # ls -l access.log.bz2 -rw-r--r-- 1 root root 1234567 3月 9 10:00 access.log.bz2 # bzip2 -d access.log.bz2 # ls -l access.log -rw-r--r-- 1 root root 9876543 3月 9 10:00 access.log

bzip2 はアーカイブ(複数ファイルのまとめ)機能を持たないため、複数ファイルを扱う場合は必ず tar と組み合わせてください。

「bzip2: command not found」エラーが出る場合

# tar jxvf file.tar.bz2 tar (child): bzip2: Cannot exec: No such file or directory

このエラーは、bzip2 パッケージがインストールされていない場合に発生します。以下のコマンドでインストールしてください。

RHEL系(AlmaLinux/Rocky Linux等):dnf install bzip2
Debian/Ubuntu系:apt install bzip2

# dnf install bzip2 # tar jxvf file.tar.bz2 # インストール後、再度実行すれば正常に解凍できる

本記事のまとめ

やりたいこと コマンド
tar.bz2ファイルを解凍する tar jxvf ファイル名.tar.bz2
解凍先ディレクトリを指定する tar jxvf ファイル名.tar.bz2 -C /解凍先/
中身を確認する(展開せず一覧表示) tar jtf ファイル名.tar.bz2
特定のファイルだけ取り出す tar jxvf ファイル名.tar.bz2 パス/ファイル名
tar.bz2ファイルを作成(圧縮)する tar jcvf 作成名.tar.bz2 対象ディレクトリ/
除外ファイルを指定して圧縮する tar jcvf 作成名.tar.bz2 対象/ --exclude="*.log"
単一ファイルをbzip2で圧縮する bzip2 ファイル名
単一ファイルをbzip2で解凍する bzip2 -d ファイル名.bz2

圧縮・解凍やファイル操作で、毎回ネットを検索していませんか?

tarコマンドのオプションを忘れるたびに検索していては、本来の作業に集中できません。アーカイブの扱いはLinuxサーバー管理の基本中の基本です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る