「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 |
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
・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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
