【完全網羅】tarコマンドの基本から応用まで徹底解説|Linux

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年4月)

✔当記事はこのような方に向けて書かれています

「tarコマンドの基本について知りたい」

「tarコマンドではどんなことができるのだろうか」

「tarコマンドでオプションを扱う具体例が見てみたい」

✔当記事の主な内容は以下のとおり

  • tarコマンドを扱うための基礎知識
  • tarコマンドでできること・書き方の基本
  • tarコマンドの実例

当記事では、tarコマンドについて、その基本はもちろん、具体例付きでさまざまな場面での使い方まで丁寧に解説しています。

ぜひ最後までご覧ください。

使用例や主要なコマンドはこちらでもご覧になれます。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

tarコマンドで知っておきたい基礎知識

tarコマンドにおける基礎知識に目を通しましょう。

意外と見落としていることがあるかもしれません。

  • Linux tarコマンドの概要
  • アーカイブとは?
  • 圧縮と解凍の違い

Linux tarコマンドの概要

tarコマンドは、Linuxでファイルやディレクトリをアーカイブ化・圧縮・解凍するためのコマンド。

多くのLinuxディストリビューションで標準でインストールされています。

tarは”Tape ARchive”の略で、もともとはテープデバイスにデータをアーカイブする目的で開発されましたが、現在では汎用的に使われています。

アーカイブとは?

 アーカイブは、複数のファイルやディレクトリを1つのファイルにまとめることです。

これにより、ファイルの管理や転送が容易になります。

アーカイブされたファイルは、元のファイル構造や属性を保持しており、解凍することで元の状態に戻せます。

圧縮と解凍の違い

 圧縮は、アーカイブをより小さいサイズにすることで、ディスク容量や転送時間を節約できるメリットがあります。

圧縮アルゴリズムは主に以下の3種類で、それぞれ圧縮効率や速度に特徴があります。

圧縮形式圧縮率速度特徴
gzip標準的な圧縮率高速– 広く利用されているため、互換性が高い
– 拡張子:.gz
bzip2高い圧縮率中速– gzipよりも圧縮率が高いが、速度がやや遅い
– 拡張子:.bz2
xz最も高い圧縮率速度は遅い– 圧縮率が最も高いが、圧縮・解凍速度が遅い
– より多くのシステムリソースを使用する
– 拡張子:.xz

解凍は、圧縮されたアーカイブを元のサイズに戻すことです。

解凍時には、圧縮時と同じアルゴリズムを使用する必要があります

tarコマンドの基本的な使い方

tarコマンドの基本的な使い方をご紹介します。

それぞれのコマンドと合わせてできることを見ていきましょう。

  • アーカイブの作成
  • アーカイブの解凍
  • アーカイブの一覧表示
  • アーカイブに追加する
  • アーカイブからファイルを抽出

アーカイブの作成

tarコマンドでアーカイブを作成するには、-cオプションを使用します。

例えば以下のように実行すると、指定したフォルダをアーカイブ化してarchive.tarファイルに保存します。

$ tar -cvf archive.tar dir
dir/
dir/symlink

-vオプションを付けることで、進行状況が表示されます。

アーカイブの解凍

アーカイブを解凍するには、-xオプションを使用します。

$ tar -xvf archive.tar
dir/
dir/symlink

-xオプションにより、archive.tarファイルが解凍され、元のフォルダ構造が復元できるのです。

ここでも、-vオプションを使って進行状況を表示させています。

アーカイブの一覧表示

tarコマンドでアーカイブの中身を確認するには、-tオプションを使用します。

$ tar -tvf archive.tar
drwxrwxr-x yulikepython/yulikepython 0 2023-03-27 23:49 dir/
lrwxrwxrwx yulikepython/yulikepython 0 2023-03-27 23:49 dir/symlink -> symlink

-tオプションによりarchive.tarファイルに含まれるファイルやディレクトリの一覧を、-vオプションにより詳細な情報を表示しています。

アーカイブに追加する

既存のアーカイブにファイルやディレクトリを追加する場合は、-rオプションを使用します。

$ tar -rvf archive.tar itc.py
itc.py

「itc.py」が既存のarchive.tarファイルに追加されます。

ただし、圧縮されたアーカイブに対してこの操作はできません。

アーカイブからファイルを抽出

特定のファイルやディレクトリをアーカイブから抽出するには、–extractオプションと–fileオプションを組み合わせて使用します。

$ tar --extract --file=archive.tar -v itc.py
itc.py

主要なオプションの紹介

いくつかtarコマンドのオプションに触れましたが、以下が一覧です。

概要や実例と合わせてご覧ください。

オプション名概要実例
-c, –createアーカイブを作成するtar -cvf archive.tar folder
-x, –extractアーカイブからファイルを抽出するtar -xvf archive.tar
-t, –listアーカイブ内のファイルを一覧表示するtar -tvf archive.tar
-v, –verbose実行結果を詳細表示するtar -cvf archive.tar folder
-f, –fileアーカイブファイル名を指定するtar -cvf archive.tar folder
-z, –gzipgzip形式で圧縮・解凍するtar -czvf archive.tar.gz folder
-j, –bzip2bzip2形式で圧縮・解凍するtar -cjvf archive.tar.bz2 folder
-J, –xzxz形式で圧縮・解凍するtar -cJvf archive.tar.xz folder
-C, –directory指定したディレクトリで作業を行うtar -xvf archive.tar -C /tmp
-u, –updateアーカイブ内の古いファイルを更新するtar -uvf archive.tar new_file.txt
-r, –appendアーカイブにファイルを追加するtar -rvf archive.tar new_file.txt
–deleteアーカイブから指定したファイルを削除するtar –delete -f archive.tar file.txt
–excludeアーカイブの対象から指定したファイルを除外するtar -cvf archive.tar –exclude ‘*.log’ folder

tarコマンドでの圧縮・解凍

tarコマンドでの圧縮・解凍について、それぞれ形式別に見ていきます。

以下の形式へ対応しています。

  • gzip形式での圧縮・解凍
  • bzip2形式での圧縮・解凍
  • xz形式での圧縮・解凍

gzip形式での圧縮・解凍

gzip形式で圧縮・解凍するには、-zオプションを使用します。

#圧縮:-cと組み合わせる
$ tar -czvf archive.tar.gz itcdir
itcdir/
itcdir/itc.py
itcdir/itc.txt

#解凍:-xと組み合わせる
$ tar -xzvf archive.tar.gz
itcdir/
itcdir/itc.py
itcdir/itc.txt

bzip2形式での圧縮・解凍

bzip2形式で圧縮するには、-jオプションを使用します。

#圧縮:-cと組み合わせる
$ tar -cjvf archive.tar.bz2 itcdir
itcdir/
itcdir/itc.py
itcdir/itc.txt

#解凍:-xと組み合わせる
$ tar -xjvf archive.tar.bz2
itcdir/
itcdir/itc.py
itcdir/itc.txt

xz形式での圧縮・解凍

xz形式で圧縮するには、-Jオプションを使用します。

#圧縮:-cと組み合わせる
$ tar -cJvf archive.tar.xz itcdir
itcdir/
itcdir/itc.py
itcdir/itc.txt

#解凍:-xと組み合わせる
$ tar -xJvf archive.tar.xz
itcdir/
itcdir/itc.py
itcdir/itc.txt

tarコマンドの応用例

tarコマンドには応用した使い方もあります。

場面によって使い分けられるよう、見ていきましょう。

  • アーカイブ化しないで圧縮・解凍
  • 特定の拡張子のファイルだけをアーカイブ
  • アーカイブから特定のファイルを削除
  • アーカイブの分割と結合
  • パスワード付きアーカイブの作成

アーカイブ化しないで圧縮・解凍

アーカイブ化せずに単独のファイルを圧縮・解凍する場合は、gzip、bzip2、xzコマンドを使用します。

gzipの場合の例はこちらです。

gzip itc.txt

itc.txtをgzip形式に圧縮し、解凍は以下のとおり。

gzip -d itc.txt.gz

bzip2やxzの場合も同様です。

特定の拡張子のファイルだけをアーカイブ

findコマンドと組み合わせることで、特定の拡張子のファイルだけをアーカイブすることができます。

例えば、.txtファイルだけをアーカイブする例はこちら。

$ find . -name "*.txt" -type f -print0 | tar -czvf txt_files.tar.gz --null -T -
./itc_zipped.txt
./diffar/first/infirst.txt
./diffar/second/insecond.txt
./itc2.txt
./itcdir/itc.txt

ここで、findコマンドで検索したファイルをtarコマンドに渡してアーカイブを作成しています。

アーカイブから特定のファイルを削除

アーカイブから特定のファイルを削除するには、以下の手順に従う必要があります。

  1. アーカイブを解凍
  2. 削除したいファイルを取り除く
  3. 再度アーカイブを作成

&&でつなぎ、以下のようにすれば、一行のコマンドで実行可能です。

tar -xvf archive.tar && rm -f targetfile && tar -cvf new_archive.tar *

アーカイブの分割と結合

大きなアーカイブファイルを分割して扱いやすくするには、splitコマンドを使用します。

分割・結合の方法はそれぞれ以下の例を参考にしてください。

#分割
$ split -b 100M archive.tar.gz archive_part_

#結合
$ cat archive_part_* > archive_combined.tar.gz

分割では、archive_part_aa, archive_part_ab, …のように連番が付けられたファイルが生成されます。

パスワード付きアーカイブの作成

tarコマンドでは直接パスワード付きアーカイブを作成できませんが、gpgコマンドを使って暗号化できます。

例として以下のコマンドでは、アーカイブを作成した後、gpgコマンドでパスワードを設定して暗号化されたarchive.tar.gz.gpgファイルが生成されます。

tar -czvf archive.tar.gz folder && gpg -c archive.tar.gz

復号化するには、「gpg -d archive.tar.gz.gpg | tar -xzvf -」と実行してください。

tarコマンドのエラー対処法

tarコマンドでよく見られるエラーと、その文言・説明、対処法を以下に示します。

エラー文言説明対処法
tar: Error opening archive: Failed to open ‘file.tar’指定した tar ファイルを開けないtar ファイルが存在するか、パスが正しいか確認する
tar: file.tar: Cannot open: No such file or directory指定した tar ファイルが存在しないtar ファイルが存在するか、パスが正しいか確認する
tar: directory.tar: Cannot open: Is a directorytar ファイルとして扱おうとしたが、実際にはディレクトリだった-f オプションで tar ファイルを指定する
tar: Cowardly refusing to create an empty archive空の tar ファイルを作成しようとしたファイルに何かしらのデータを含める
tar: Cannot change ownership to uid 1001, gid 1001: Invalid argumenttar ファイルの所有者の変更に失敗した作成ユーザーに必要な権限があるか確認する
tar: Ignoring unknown extended header keyword `SCHILY.dev’tar ファイルに不正なヘッダーが含まれているtar ファイルを再度作り直すか、不正なヘッダーを手動で修正する
tar: This does not look like a tar archivetar ファイルの形式が tar 形式ではないtar 形式でファイルを作成し直す
tar: Unrecognized archive formattar ファイルの形式が認識できないtar ファイルの形式を確認し、正しい tar コマンドを選択する
tar: Exiting with failure status due to previous errorstar コマンドの前の実行でエラーが発生したため、コマンドが失敗した前のエラーを修正してから、再度 tar コマンドを実行する

Linux tarコマンドのコツとベストプラクティス

tarコマンドを使う上でのコツを見ていきましょう。

以下を覚えておくと、実践的でとても便利です。

  • tarコマンドのエイリアス設定
  • シェルスクリプトでの活用方法

tarコマンドのエイリアス設定

よく使うtarコマンドのオプションをエイリアスとして設定すれば、入力の手間を減らすことができます。

例えば、bashの場合、.bashrcファイルに以下のようなエイリアスを追加することで、簡単にアーカイブの圧縮・解凍ができるようになります。

alias tarc='tar -czvf'
alias tarx='tar -xzvf'

エイリアス(alias)とは、ショートカットキーのようなもの。

上の例だと、「tarc」とターミナルに打てば、「tar -czvf」と同じ様に扱ってくれます。

シェルスクリプトでの活用方法

シェルスクリプトを使ってtarコマンドを活用することで、自動化や一括処理が可能になります。

以下にシェルスクリプトでのtarコマンドの活用例を示します。

  • 例1:複数のディレクトリを一括でアーカイブ
  • 例2:定期的にデータのバックアップを取る
  • スクリプトの実行方法

例1:複数のディレクトリを一括でアーカイブ

#!/bin/sh
for dir in dir1 dir2 dir3; do
tar -czvf "${dir}.tar.gz" "${dir}"
done

例2:定期的にデータのバックアップを取る

#!/bin/sh
backup_dir="/path/to/backup"
date_str=$(date '+%Y%m%d')
tar -czvf "${backup_dir}/data_${date_str}.tar.gz" "/path/to/data"

スクリプトの実行方法

スクリプトの実行方法はこちら。

  • スクリプトファイルを作成:testScript.sh
  • スクリプトに実行権限を与える:chmod +x testScript.sh
  • スクリプトを実行する:./ testScript.sh

まとめ:tarコマンドでアーカイブ・圧縮・解凍を効率化

当記事の内容をまとめます。

  • tarコマンドは、複数ファイルをアーカイブ化・圧縮化できるコマンド
  • tarコマンドはオプションと組み合わせて使うと、さまざまな形式が使える
  • tarコマンドだけでなく、ほかの圧縮コマンドについても知っておこう

当記事では、tarコマンドの基本的な使い方や応用例を解説しました。

tarコマンドは、LinuxやUNIX系のシステムで広く利用されている強力なアーカイブツール。

tarコマンドを使いこなすことで、ファイル管理やデータのバックアップが効率的におこなえるようになります。

ぜひ、日々の作業でtarコマンドを活用してみてください。

タイトルとURLをコピーしました