LightFile NextLightFile Next

システムディレクトリ

作業ディレクトリと永続化データの管理

LightFile Batchは、継続的なバッチ処理を実現するために、ローカルファイルシステムに複数のディレクトリを作成して使用します。

これらのディレクトリには、処理済みファイルの記録(簡易データベース)、最適化前のバックアップ、実行ログなどが保存されます。

ディレクトリ構造の概要

LightFile Batchは以下のディレクトリ構造を使用します:

~/.lightfile-next/batch/                    # システムディレクトリ
└── <プロジェクトコード>/                    # プロジェクトディレクトリ
    ├── file-memory/                        # ファイルメモリ(簡易データベース)
    ├── backup/                             # バックアップディレクトリ(全セッション共通)
    │   ├── dir1/
    │   │   └── image1.jpg
    │   └── dir2/
    │       └── image2.png
    └── sessions/                           # セッションディレクトリ
        ├── 2024-10-20T15-30-45-0900/       # セッション1
        │   ├── batch.log                   # セッションログ(全ログレベル)
        │   ├── backlog.gz                  # 処理対象ファイル一覧(gzip圧縮)
        │   ├── metrics.json                # メトリクス情報
        │   └── configs.json                # 設定情報
        └── 2024-10-20T16-45-30-0900/       # セッション2
            ├── batch.log
            ├── backlog.gz
            ├── metrics.json
            └── configs.json

各ディレクトリの役割

システムディレクトリ(全データの保存場所)

LightFile Batchが使用するすべてのデータが保存されるルートディレクトリです。このディレクトリの下に、各プロジェクトのディレクトリが作成されます。

デフォルト: ~/.lightfile-next/batch

カスタマイズ:

lightfile-batch local /path/to/images --system-dir /custom/system
dir:
  system: /custom/system

プロジェクトディレクトリ(処理対象ごとの作業領域)

各処理対象(ディレクトリやリモートURL)ごとに作成される作業領域です。プロジェクトコードは処理対象のパスやURLから自動生成され、処理状態やバックアップがこのディレクトリに保存されます。

デフォルト: <システムディレクトリ>/<プロジェクトコード>

プロジェクトコードの生成規則:

処理対象プロジェクトコード例
/var/www/imageslocal-var-www-images
s3://my-bucket/imagess3-my-bucket-images
ftp://ftp.example.com/imagesftp-ftp.example.com-images

カスタマイズ:

lightfile-batch local /path/to/images --project-dir /custom/project
dir:
  project: /custom/project

ファイルメモリ(簡易データベース)

処理済みファイルの情報を記録する簡易データベースです。ファイルのパス、サイズ、更新日時を記録し、重複処理を防ぎます。

デフォルト: <プロジェクトディレクトリ>/file-memory

カスタマイズ:

lightfile-batch local /path/to/images --file-memory-dir /custom/memory
dir:
  fileMemory: /custom/memory

動作:

ファイルメモリには、処理済みファイルの情報(パス、サイズ、更新日時)が記録されます。2回目以降の実行では、この情報を参照してファイルが変更されたかどうかを判定し、変更されたファイルのみを再処理します。

バックアップディレクトリ(最適化前のファイル保存)

最適化前のオリジナルファイルが保存されるディレクトリです。画質が想定以上に悪化した場合に、元のファイルから再処理できます。

デフォルト: <プロジェクトディレクトリ>/backup

カスタマイズ:

lightfile-batch local /path/to/images --backup-dir /custom/backup
dir:
  backup: /custom/backup

バックアップの構造:

元のディレクトリ構造を保持してバックアップが保存されます:

backup/
├── dir1/
│   └── image1.jpg          # 最適化前のファイル
└── dir2/
    └── image2.png          # 最適化前のファイル

注意: 元の画像が更新されたときには、バックアップが上書きされます。ただし、最適化済みのファイルを再度最適化してもバックアップは上書きされません(最初の最適化前のファイルがバックアップとして保持されます)。

詳細は バックアップモード を参照してください。

セッションディレクトリ(実行ログと統計情報)

各実行ごとに作成されるディレクトリです。実行時のログ、処理統計、設定情報が保存され、トラブルシューティングや処理履歴の確認に使用されます。

デフォルト: <プロジェクトディレクトリ>/sessions/<セッションID>

明示的に指定:

lightfile-batch local /path/to/images --session-dir /custom/session
sessionDir: /custom/session

セッションIDの形式: YYYY-MM-DDTHH-MM-SS-ZZZZ (タイムゾーン付きISO 8601形式)

例: 2024-10-20T15-30-45-0900

セッションディレクトリの内容:

sessions/2024-10-20T15-30-45-0900/
├── batch.log              # セッションログ
├── backlog.gz             # 処理対象ファイル一覧(gzip圧縮)
├── metrics.json           # メトリクス情報
└── configs.json           # 設定情報

batch.log

セッション中のログが記録されます。記録されるログレベルは、コンソール出力と同じログレベル(--log-level)に従います。

# セッションログを確認
tail -f ~/.lightfile-next/batch/<プロジェク>/sessions/<セッションID>/batch.log

backlog.gz

処理対象となったファイルの一覧が圧縮形式で保存されます。トラブルシューティング時に、どのファイルが処理対象だったかを確認できます。

metrics.json

セッションの統計情報(処理ファイル数、削減量、所要時間など)が記録されます。処理履歴の確認や次回実行時の見積もりに使用されます。

configs.json

実行時の設定情報が記録されます。トラブルシューティング時に、どのような設定で実行されたかを確認できます。

セッション保持期間

古いセッションディレクトリは自動的に削除されます。

デフォルト保持期間: 28日間

カスタマイズ:

lightfile-batch local /path/to/images --session-retention-days 7
dir:
  sessionRetentionDays: 7

保持期間を無効化:

dir:
  sessionRetentionDays: 0  # 自動削除しない

動作:

LightFile Batch起動時に、保持期間を過ぎたセッションディレクトリを自動削除します。

ディレクトリ管理

手動でのクリーンアップ

バックアップディレクトリ

古いバックアップを削除:

# 60日以前のバックアップを削除
find ~/.lightfile-next/batch/<プロジェク>/backup/ \
  -type d -mtime +60 -exec rm -rf {} +

簡易データベースのリセット

ファイルメモリ(簡易データベース)をリセットして、すべてのファイルを再処理:

rm -rf ~/.lightfile-next/batch/<プロジェク>/file-memory/

警告: 簡易データベースを削除すると、次回実行時にすべてのファイルが再処理されます。

ディスク使用量の確認

# プロジェクトディレクトリ全体のサイズ
du -sh ~/.lightfile-next/batch/<プロジェク>/

# 各ディレクトリのサイズ
du -sh ~/.lightfile-next/batch/<プロジェク>/*/

# バックアップディレクトリのサイズ
du -sh ~/.lightfile-next/batch/<プロジェク>/backup/

排他制御

LightFile Batchは、同一マシン上で複数のプロセスが同時に起動しないよう排他制御を行っています。

詳しくは 排他制御 をご覧ください。

関連ページ