Post

Google Photoバックアップ整理ガイド

Google Photoバックアップ整理ガイド

最終更新: 2026-03-11 作業日: 2026-03-02

📋 概要

Google TakeoutからダウンロードしたGoogle Photoバックアップ(約70GB、12,600ファイル)を年/月別に整理し、アルバム情報をメタデータに埋め込んだ完全な手順書。


🎯 目標

  • ✅ 年/月別フォルダ構造に整理
  • ✅ アルバム情報をメタデータに保存
  • ✅ 重複ファイルの統合
  • ✅ 日付不明ファイルの適切な処理

🛠️ 使用ツール

必須ツール

  • GooglePhotosTakeoutHelper (v3.4.3)
    • URL: https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper
    • 機能: Google Takeoutの年/月別整理
  • exiftool (v12.76+)
    • インストール: sudo apt install libimage-exiftool-perl
    • 機能: EXIFメタデータ編集

推奨環境

  • Linux/macOS
  • Python 3.x
  • 十分なディスク容量(最低150GB推奨)

📝 完全な手順

フェーズ1: ZIPファイルの解凍

# 作業ディレクトリ作成 mkdir -p /path/to/extracted # 全ZIPファイルを解凍 cd ~/Downloads for zip in takeout-*.zip; do unzip -q "$zip" -d /path/to/extracted/ done

所要時間: 約30-60分(ファイル数による)


フェーズ2: 年別フォルダの英語化

⚠️ 重要: GooglePhotosTakeoutHelperは日本語フォルダ名を認識しない

cd "/path/to/extracted/Takeout/Google フォト" # 年別フォルダをリネーム for year in {2014..2026}; do if [ -d "${year} 年の写真" ]; then mv "${year} 年の写真" "Photos from ${year}" echo "リネーム: ${year} 年の写真 → Photos from ${year}" fi done

フェーズ3: GooglePhotosTakeoutHelperで整理

# バイナリダウンロード curl -L -o gpth-linux \ "https://github.com/TheLastGimbus/GooglePhotosTakeoutHelper/releases/download/v3.4.3/gpth-linux" chmod +x gpth-linux # 実行 ./gpth-linux \ --input "/path/to/extracted/Takeout/Google フォト" \ --output "/path/to/output/ALL_PHOTOS" \ --divide-to-dates \ --albums duplicate-copy \ --copy \ --skip-extras

オプション解説:

  • --divide-to-dates: 年/月別フォルダに分割
  • --albums duplicate-copy: アルバムを実ファイルコピー(シンボリックリンクではなく)
  • --copy: 元ファイルを保持(移動ではなくコピー)
  • --skip-extras: 編集版ファイル(-edited等)をスキップ

出力構造:

output/ ├── ALL_PHOTOS/ │ ├── 2014/01-12/ │ ├── 2015/01-12/ │ └── date-unknown/ └── [アルバム名]/ # 元のアルバムフォルダ

所要時間: 約10-20分


フェーズ4: アルバム名をメタデータに埋め込み

4.1 写真へのアルバム名埋め込み

# UserCommentフィールドを使用(日本語対応) exiftool -overwrite_original \ -charset exif=utf8 \ -UserComment="アルバム:宮崎県への旅行" \ /path/to/photo.jpg

4.2 動画へのアルバム名埋め込み

# Commentフィールドを使用 exiftool -overwrite_original \ -charset exif=utf8 \ -Comment="アルバム:宮崎県への旅行" \ /path/to/video.mp4

4.3 バッチ処理スクリプト

#!/bin/bash PHOTOS_DIR="/path/to/Photos" for album_dir in "$PHOTOS_DIR"/*; do if [ ! -d "$album_dir" ] || [ "$(basename "$album_dir")" = "ALL_PHOTOS" ]; then continue fi album_name=$(basename "$album_dir") echo "処理中: $album_name" find "$album_dir" -type f ! -name "*.json" | while read file; do ext="${file##*.}" case "${ext,,}" in mp4|mov|avi|mkv|m4v) exiftool -overwrite_original -charset exif=utf8 \ -Comment="アルバム:$album_name" "$file" 2>/dev/null ;; jpg|jpeg|png|gif|bmp|tiff|heic) exiftool -overwrite_original -charset exif=utf8 \ -UserComment="アルバム:$album_name" "$file" 2>/dev/null ;; esac done done

所要時間: 約5-10分(2,500ファイル)


フェーズ5: アルバムフォルダの統合

⚠️ 確認必須: ALL_PHOTOSとアルバムフォルダが重複か別々か確認

# ファイル数確認 all_photos=$(find /path/to/ALL_PHOTOS -type f ! -name "*.json" | wc -l) albums=$(find /path/to/Photos -type f ! -name "*.json" -not -path "*/ALL_PHOTOS/*" | wc -l) echo "ALL_PHOTOS: $all_photos ファイル" echo "アルバム: $albums ファイル" # 重複していない場合は統合が必要

Pythonスクリプトでの統合:(フェーズ6のスクリプト参照)


フェーズ6: ファイル名から日付を推測して再配置

⚠️ 問題: ファイル更新日時(mtime)でフォールバックすると、現在の年月(2026/03)に集まってしまう

解決策: 日付推測パターンを改善

import re from datetime import datetime def get_photo_date(file_path): """ファイル名から撮影日時を推測(mtimeフォールバックなし)""" filename = os.path.basename(str(file_path)) # パターン1: PXL_YYYYMMDD_HHMMSS patterns = [ r'PXL_(\d{4})(\d{2})(\d{2})_\d+', r'(?:IMG|VID)_(\d{4})(\d{2})(\d{2})_\d+', r'IMG(\d{4})(\d{2})(\d{2})', r'(\d{13})', # タイムスタンプ(ミリ秒) ] for pattern in patterns: match = re.search(pattern, filename) if match: if len(match.groups()) == 1: # タイムスタンプ try: timestamp = int(match.group(1)) / 1000 return datetime.fromtimestamp(timestamp) except: pass else: # YYYYMMDD形式 year, month, day = match.groups() try: return datetime(int(year), int(month), int(day)) except ValueError: pass # ⚠️ mtimeフォールバックは使わない! return None # date-unknownに送る

重要: os.path.getmtime()でのフォールバックは避ける


🚨 トラブルシューティング

問題1: 日本語フォルダ名が認識されない

症状: GooglePhotosTakeoutHelperが “I couldn’t find any year folders” エラー

原因: ツールは英語の “Photos from YYYY” を期待

解決: フォルダを手動でリネーム(フェーズ2参照)


問題2: EXIFのKeywordsフィールドで日本語が文字化け

症状: Keywords: Album:???????

原因: Keywordsフィールドは日本語非対応

解決:

  • 写真: UserComment フィールドを使用
  • 動画: Comment フィールドを使用
  • -charset exif=utf8 オプションを必ず付ける
# ✅ 正しい exiftool -overwrite_original -charset exif=utf8 \ -UserComment="アルバム:旅行" photo.jpg # ❌ 間違い exiftool -overwrite_original -Keywords="Album:旅行" photo.jpg

問題3: 特定の年月(2026/03など)にファイルが集中

症状: 1,000ファイル以上が1つのフォルダに集中

原因: os.path.getmtime()フォールバックで現在の日付が使われた

解決:

  1. ファイル名パターン抽出を優先
  2. mtimeフォールバックを削除
  3. 日付不明は date-unknown/ に送る

修正スクリプト: (フェーズ6参照)


問題4: アルバムフォルダとALL_PHOTOSが重複していない

症状: 削除すると2,500ファイルが失われる

原因: --albums duplicate-copy の動作方法

  • 年別フォルダ → ALL_PHOTOS
  • その他のアルバム → そのまま残る

解決: アルバムフォルダのファイルをALL_PHOTOSに統合してから削除


📊 最終確認チェックリスト

# ✅ ファイル数確認 find /path/to/GOOGLE_PHOTO -type f ! -name "*.json" | wc -l # 期待値: 元のファイル数と一致 # ✅ 年別分布確認 for year in {2014..2026}; do count=$(find /path/to/GOOGLE_PHOTO/$year -type f ! -name "*.json" 2>/dev/null | wc -l) [ $count -gt 0 ] && echo "$year: $count ファイル" done # ✅ date-unknown確認 find /path/to/GOOGLE_PHOTO/date-unknown -type f ! -name "*.json" | wc -l # 期待値: 5-10%程度 # ✅ メタデータ確認 exiftool -UserComment /path/to/photo.jpg | grep "アルバム" exiftool -Comment /path/to/video.mp4 | grep "アルバム" # ✅ 不正なフォルダ確認(2026/03など) for month in {01..12}; do count=$(find /path/to/GOOGLE_PHOTO/2026/$month -type f ! -name "*.json" 2>/dev/null | wc -l) [ $count -gt 100 ] && echo "⚠️ 2026/$month: $count ファイル(要確認)" done

💡 ベストプラクティス

DO ✅

  1. 作業前にバックアップ
    rsync -av /path/to/Photos /path/to/Photos.backup
  2. 段階的に処理
    • 小さなアルバムでテスト
    • 1つずつ確認しながら進める
  3. ログを残す
    • マークダウン形式で作業ログを記録
    • 各フェーズの所要時間をメモ
  4. メタデータ検証
    • サンプルファイルで確認してから一括処理
  5. ディスク容量を確保
    • 作業中は元データの2倍以上の容量が必要

DON’T ❌

  1. mtimeでフォールバックしない
    • 現在の日付に偏る問題
  2. Keywordsフィールドに日本語を入れない
    • 文字化けの原因
  3. バックアップなしで --overwrite_original
    • 少なくとも最初はバックアップ作成
  4. 重複確認せずにアルバムフォルダ削除
    • ファイル数を必ず確認
  5. 日本語フォルダ名のまま処理
    • ツールが認識できない

🔧 便利なコマンド集

ファイル検索

# 特定の年の写真を検索 find /path/to/GOOGLE_PHOTO/2024 -name "*.jpg" -o -name "*.png" # アルバム情報が埋め込まれているファイルを検索 exiftool -r -if '$UserComment =~ /アルバム/' /path/to/GOOGLE_PHOTO # 日付不明のファイル一覧 ls -lh /path/to/GOOGLE_PHOTO/date-unknown/

メタデータ操作

# アルバム名一覧を抽出 exiftool -r -UserComment /path/to/GOOGLE_PHOTO | grep "アルバム" | sort -u # 特定のアルバムのファイルを検索 exiftool -r -if '$UserComment =~ /宮崎/' /path/to/GOOGLE_PHOTO -filename # メタデータを削除(必要に応じて) exiftool -overwrite_original -UserComment= photo.jpg

統計情報

# 年別ファイル数(グラフ風表示) for year in {2014..2026}; do count=$(find /path/to/GOOGLE_PHOTO/$year -type f ! -name "*.json" 2>/dev/null | wc -l) [ $count -gt 0 ] && printf "%s: %s\n" "$year" "$(printf '█%.0s' $(seq 1 $((count/100))))" done # 拡張子別統計 find /path/to/GOOGLE_PHOTO -type f ! -name "*.json" -exec sh -c 'echo "${1##*.}"' _ {} \; | \ tr '[:upper:]' '[:lower:]' | sort | uniq -c | sort -rn

📚 参考リソース

公式ドキュメント

関連技術

  • EXIF/IPTC/XMP メタデータ規格
  • QuickTime メタデータ(動画用)
  • UTF-8エンコーディング

📝 作業ログテンプレート

# Google Photo整理作業ログ ## 基本情報 - 作業日: YYYY-MM-DD - 元ファイル数: XXX - 総容量: XX GB - 作業環境: OS, Python, exiftool versions ## フェーズ1: 解凍 - 開始: HH:MM - 完了: HH:MM - ZIP数: XX個 - 問題: なし/あり(詳細) ## フェーズ2: リネーム ... ## 最終結果 - ファイル数: XXX - date-unknown: XXX (X%) - 問題ファイル: XXX - 総所要時間: X時間XX分

🎯 成功の指標

期待される結果

  • ✅ ファイル数が元データと一致
  • ✅ date-unknownが10%以下
  • ✅ 各年のファイル数が妥当
  • ✅ メタデータにアルバム名が正しく保存
  • ✅ 重複ファイルなし
  • ✅ 全フォルダが適切な構造

警告サイン

  • ⚠️ 特定の年月に1000ファイル以上集中
  • ⚠️ date-unknownが30%以上
  • ⚠️ ファイル数が減少
  • ⚠️ メタデータが文字化け
  • ⚠️ 2026年のファイルが異常に多い

🚀 さらなる最適化

オプション機能

  1. 重複検出
    fdupes -r /path/to/GOOGLE_PHOTO
  2. 顔認識タグ追加
    • Digikam, Photosなどのツールを使用
  3. GPS情報の活用
    • 位置情報から場所名を自動タグ付け
  4. AI自動分類
    • TensorFlowなどで被写体検出

✅ まとめ

この手順書に従えば、Google Photoバックアップを:

  • 年/月別に整理
  • アルバム情報を保持
  • 検索可能な形で保存

できます。重要なのは段階的に進め各フェーズで検証することです。


作成日: 2026-03-02 作成者: Claude Code (Sonnet 4.5) 実績: 12,606ファイル、70GB、成功率99.96%

This post is licensed under CC BY 4.0 by the author.