(最終更新月:2023年4月)
✔当記事はこのような方に向けて書かれています
「tarコマンドの基本について知りたい」
「tarコマンドではどんなことができるのだろうか」
「tarコマンドでオプションを扱う具体例が見てみたい」
✔当記事の主な内容は以下のとおり
- tarコマンドを扱うための基礎知識
- tarコマンドでできること・書き方の基本
- tarコマンドの実例
当記事では、tarコマンドについて、その基本はもちろん、具体例付きでさまざまな場面での使い方まで丁寧に解説しています。
ぜひ最後までご覧ください。
使用例や主要なコマンドはこちらでもご覧になれます。
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, –gzip | gzip形式で圧縮・解凍する | tar -czvf archive.tar.gz folder |
-j, –bzip2 | bzip2形式で圧縮・解凍する | tar -cjvf archive.tar.bz2 folder |
-J, –xz | xz形式で圧縮・解凍する | 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コマンドに渡してアーカイブを作成しています。
アーカイブから特定のファイルを削除
アーカイブから特定のファイルを削除するには、以下の手順に従う必要があります。
- アーカイブを解凍
- 削除したいファイルを取り除く
- 再度アーカイブを作成
&&でつなぎ、以下のようにすれば、一行のコマンドで実行可能です。
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 directory | tar ファイルとして扱おうとしたが、実際にはディレクトリだった | -f オプションで tar ファイルを指定する |
tar: Cowardly refusing to create an empty archive | 空の tar ファイルを作成しようとした | ファイルに何かしらのデータを含める |
tar: Cannot change ownership to uid 1001, gid 1001: Invalid argument | tar ファイルの所有者の変更に失敗した | 作成ユーザーに必要な権限があるか確認する |
tar: Ignoring unknown extended header keyword `SCHILY.dev’ | tar ファイルに不正なヘッダーが含まれている | tar ファイルを再度作り直すか、不正なヘッダーを手動で修正する |
tar: This does not look like a tar archive | tar ファイルの形式が tar 形式ではない | tar 形式でファイルを作成し直す |
tar: Unrecognized archive format | tar ファイルの形式が認識できない | tar ファイルの形式を確認し、正しい tar コマンドを選択する |
tar: Exiting with failure status due to previous errors | tar コマンドの前の実行でエラーが発生したため、コマンドが失敗した | 前のエラーを修正してから、再度 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コマンドを活用してみてください。