Linux tarコマンド入門
ファイルの圧縮と展開
tarコマンドでファイルのアーカイブ作成・圧縮・展開を行う方法を基礎から実践まで解説します。
こんな人向けの記事です
- ファイルの圧縮・展開の方法を基礎から学びたい方
- バックアップやデプロイでtarを活用したい方
- gzip、bzip2、xzの使い分けを理解したい方
Step 1tarコマンドの基本
tarコマンドは「tape archive」の略で、複数のファイルやディレクトリを1つのアーカイブファイルにまとめるコマンドです。圧縮と組み合わせて使うのが一般的です。
ターミナル
# アーカイブを作成(gzip圧縮)
tar czf archive.tar.gz directory/
# アーカイブを展開
tar xzf archive.tar.gz
# アーカイブの内容を確認(展開せずに一覧表示)
tar tzf archive.tar.gz
# 基本操作の覚え方
# c = create(作成)
# x = extract(展開)
# t = list(一覧表示)
# z = gzip圧縮
# f = ファイル名指定
覚え方: c=作成(Create)、x=展開(eXtract)、t=一覧(lisT)、z=gzip、j=bzip2、J=xz、f=ファイル名
Step 2圧縮形式の使い分け
tarは複数の圧縮形式に対応しています。用途に応じて使い分けましょう。
ターミナル
# gzip圧縮(最も一般的、高速)
tar czf archive.tar.gz directory/
# bzip2圧縮(gzipより高圧縮)
tar cjf archive.tar.bz2 directory/
# xz圧縮(最も高圧縮だが低速)
tar cJf archive.tar.xz directory/
# 圧縮なしのアーカイブ
tar cf archive.tar directory/
| 圧縮形式 | オプション | 拡張子 | 特徴 |
|---|---|---|---|
| gzip | z | .tar.gz / .tgz | 高速、標準的 |
| bzip2 | j | .tar.bz2 | gzipより高圧縮 |
| xz | J | .tar.xz | 最も高圧縮だが低速 |
| なし | (なし) | .tar | 圧縮なし、最速 |
Step 3アーカイブの展開
アーカイブの展開方法と、展開先の指定方法を説明します。
ターミナル
# gzipアーカイブを展開
tar xzf archive.tar.gz
# bzip2アーカイブを展開
tar xjf archive.tar.bz2
# xzアーカイブを展開
tar xJf archive.tar.xz
# 展開先ディレクトリを指定(-C)
tar xzf archive.tar.gz -C /opt/app/
# 特定のファイルのみ展開
tar xzf archive.tar.gz path/to/specific/file.txt
# 自動判別で展開(圧縮形式を自動検出)
tar xf archive.tar.gz
tar xf archive.tar.bz2
tar xf archive.tar.xz
注意: 展開前にtar tzfで内容を確認しましょう。信頼できないアーカイブには絶対パスや..を含む悪意のあるパスが含まれている場合があります。
Step 4よく使うオプション一覧
tarコマンドの主要なオプションを紹介します。
ターミナル
# 詳細表示(処理中のファイルを表示)
tar czvf archive.tar.gz directory/
# 特定のファイルを除外
tar czf archive.tar.gz --exclude="*.log" directory/
tar czf archive.tar.gz --exclude=".git" project/
# 権限を保持
tar czpf archive.tar.gz directory/
# 差分バックアップ(指定日時以降に変更されたファイルのみ)
tar czf diff_backup.tar.gz --newer="2024-01-01" directory/
| オプション | 説明 |
|---|---|
c | アーカイブを作成 |
x | アーカイブを展開 |
t | アーカイブの内容を一覧表示 |
f FILE | アーカイブファイル名を指定 |
z | gzip圧縮/展開 |
j | bzip2圧縮/展開 |
J | xz圧縮/展開 |
v | 処理中のファイルを詳細表示 |
p | 権限を保持 |
-C DIR | 展開先ディレクトリを指定 |
--exclude=PATTERN | 特定パターンを除外 |
Step 5実践的な使用例
バックアップやデプロイでよく使用されるtarの実践例を紹介します。
ターミナル
# 日付付きバックアップ
tar czf backup_$(date +%Y%m%d).tar.gz /var/www/html/
# 不要ファイルを除外したバックアップ
tar czf project.tar.gz \
--exclude=".git" \
--exclude="node_modules" \
--exclude="*.log" \
project/
# Webアプリのデプロイ
tar czf deploy.tar.gz -C /var/www html/
scp deploy.tar.gz server:/tmp/
ssh server "tar xzf /tmp/deploy.tar.gz -C /var/www/"
# 複数ディレクトリをまとめてアーカイブ
tar czf configs.tar.gz /etc/nginx/ /etc/apache2/ /etc/mysql/
# パイプでリモートに転送
tar czf - directory/ | ssh user@server "tar xzf - -C /opt/"
# アーカイブにファイルを追加(圧縮なしのtarのみ)
tar rf archive.tar newfile.txt
圧縮形式の選び方: 日常のバックアップにはgzip(.tar.gz)が最適。長期保存やディスク節約にはxz(.tar.xz)がおすすめです。