TAR圧縮は「大量ファイルを効率よくまとめる」ための業務向け技術
ZIP と並んでよく使われる圧縮形式が TAR(タール) です。
特に Linux・サーバー環境では TAR が標準的で、バックアップ・ログ保存・データ転送などで頻繁に使われます。
Python では tarfile モジュールを使うことで、フォルダ丸ごと・特定ファイルだけ・圧縮方式の選択など、柔軟な TAR 圧縮が可能です。
ここでは、初心者でも理解しやすいように、基本 → 応用 → 実務テンプレートの順で丁寧に解説します。
TAR圧縮の基本:tarfile.open と add()
最小構成:フォルダを TAR にまとめる
import tarfile
with tarfile.open("archive.tar", "w") as tar:
tar.add("data")
Python重要ポイント
"w"は「TAR(非圧縮)」で作成add()にフォルダを渡すと、中のファイル・サブフォルダをすべて含めてくれる- ZIP と違い、TAR は「まとめるだけ」で圧縮はしない(後述)
TAR.GZ(gzip圧縮)で容量を減らす
gzip 付きで圧縮する(最も一般的)
import tarfile
with tarfile.open("archive.tar.gz", "w:gz") as tar:
tar.add("data")
Python深掘りポイント
"w:gz"は gzip 圧縮- ZIP より圧縮率が高いことが多い
- Linux サーバーのバックアップで最もよく使われる形式
TAR.BZ2(bzip2圧縮)でさらに高圧縮
import tarfile
with tarfile.open("archive.tar.bz2", "w:bz2") as tar:
tar.add("data")
Python深掘りポイント
"w:bz2"は bzip2 圧縮- gzip より圧縮率が高いが、処理速度は遅い
- 「容量を最優先したい」場合に向いている
TAR.XZ(xz圧縮)で最高クラスの圧縮率
import tarfile
with tarfile.open("archive.tar.xz", "w:xz") as tar:
tar.add("data")
Python深掘りポイント
"w:xz"は xz 圧縮- 圧縮率は最も高い
- ただし圧縮時間は長い
- 大容量バックアップでよく使われる
特定ファイルだけ TAR に追加する
拡張子フィルタと組み合わせる
import os
import tarfile
folder = "data"
with tarfile.open("csv_only.tar.gz", "w:gz") as tar:
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path) and name.lower().endswith(".csv"):
tar.add(path, arcname=name)
Python深掘りポイント
arcnameを指定すると TAR 内の名前を自由に変更できる- 必要なファイルだけまとめる ETL 処理に最適
例題①:日付付き TAR.GZ バックアップを作成する
シナリオ
毎日 project フォルダを gzip 圧縮して保存したい。
import tarfile
from datetime import date
folder = "project"
today = date.today().strftime("%Y-%m-%d")
tar_name = f"backup_{today}.tar.gz"
with tarfile.open(tar_name, "w:gz") as tar:
tar.add(folder)
print("バックアップ作成:", tar_name)
Python深掘りポイント
- 日付を付けることで世代管理がしやすくなる
- gzip 圧縮は速度と圧縮率のバランスが良い
例題②:ログフォルダを TAR 圧縮して元ファイルを削除する(アーカイブ化)
シナリオ
ログを圧縮して容量を節約したい。
import os
import tarfile
folder = "logs"
tar_name = "logs_archive.tar.gz"
with tarfile.open(tar_name, "w:gz") as tar:
tar.add(folder)
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path):
os.remove(path)
print("ログ圧縮&削除完了:", tar_name)
Python深掘りポイント
- TAR 圧縮後に削除することでディスク容量を大幅に節約
- ログ管理の自動化で非常に役立つ
- 削除前に TAR が正常に作成されたか確認するのが安全
例題③:複数フォルダをまとめて TAR にする
シナリオ
data と config を一つの TAR にまとめたい。
import tarfile
folders = ["data", "config"]
with tarfile.open("bundle.tar.gz", "w:gz") as tar:
for f in folders:
tar.add(f)
Python深掘りポイント
- TAR は「複数フォルダをまとめる」のが得意
- ZIP より柔軟で、サーバー運用でよく使われる
pathlib を使った読みやすい TAR 圧縮
Path オブジェクトで直感的に書ける
from pathlib import Path
import tarfile
folder = Path("data")
tar_name = "data.tar.gz"
with tarfile.open(tar_name, "w:gz") as tar:
tar.add(folder, arcname=folder.name)
Pythonメリット
- パス操作が読みやすく、ミスが減る
arcnameを使うと TAR 内のフォルダ名を自由に変更できる
TAR圧縮を業務で使うときの重要ポイント
- TAR は「まとめる」+「圧縮方式を選ぶ」構造
- gzip(w:gz)は最もバランスが良く、業務で最も使われる
- bzip2(w:bz2)・xz(w:xz)は圧縮率重視
- フォルダ丸ごと圧縮は add() だけで簡単
- 圧縮後の削除や世代管理と組み合わせると自動化が強力になる
TAR は ZIP より柔軟で、特にサーバー運用やバックアップで強力な武器になります。
