システムディレクトリ
作業ディレクトリと永続化データの管理
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/systemdir:
system: /custom/systemプロジェクトディレクトリ(処理対象ごとの作業領域)
各処理対象(ディレクトリやリモートURL)ごとに作成される作業領域です。プロジェクトコードは処理対象のパスやURLから自動生成され、処理状態やバックアップがこのディレクトリに保存されます。
デフォルト: <システムディレクトリ>/<プロジェクトコード>
プロジェクトコードの生成規則:
| 処理対象 | プロジェクトコード例 |
|---|---|
/var/www/images | local-var-www-images |
s3://my-bucket/images | s3-my-bucket-images |
ftp://ftp.example.com/images | ftp-ftp.example.com-images |
カスタマイズ:
lightfile-batch local /path/to/images --project-dir /custom/projectdir:
project: /custom/projectファイルメモリ(簡易データベース)
処理済みファイルの情報を記録する簡易データベースです。ファイルのパス、サイズ、更新日時を記録し、重複処理を防ぎます。
デフォルト: <プロジェクトディレクトリ>/file-memory
カスタマイズ:
lightfile-batch local /path/to/images --file-memory-dir /custom/memorydir:
fileMemory: /custom/memory動作:
ファイルメモリには、処理済みファイルの情報(パス、サイズ、更新日時)が記録されます。2回目以降の実行では、この情報を参照してファイルが変更されたかどうかを判定し、変更されたファイルのみを再処理します。
バックアップディレクトリ(最適化前のファイル保存)
最適化前のオリジナルファイルが保存されるディレクトリです。画質が想定以上に悪化した場合に、元のファイルから再処理できます。
デフォルト: <プロジェクトディレクトリ>/backup
カスタマイズ:
lightfile-batch local /path/to/images --backup-dir /custom/backupdir:
backup: /custom/backupバックアップの構造:
元のディレクトリ構造を保持してバックアップが保存されます:
backup/
├── dir1/
│ └── image1.jpg # 最適化前のファイル
└── dir2/
└── image2.png # 最適化前のファイル注意: 元の画像が更新されたときには、バックアップが上書きされます。ただし、最適化済みのファイルを再度最適化してもバックアップは上書きされません(最初の最適化前のファイルがバックアップとして保持されます)。
詳細は バックアップモード を参照してください。
セッションディレクトリ(実行ログと統計情報)
各実行ごとに作成されるディレクトリです。実行時のログ、処理統計、設定情報が保存され、トラブルシューティングや処理履歴の確認に使用されます。
デフォルト: <プロジェクトディレクトリ>/sessions/<セッションID>
明示的に指定:
lightfile-batch local /path/to/images --session-dir /custom/sessionsessionDir: /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.logbacklog.gz
処理対象となったファイルの一覧が圧縮形式で保存されます。トラブルシューティング時に、どのファイルが処理対象だったかを確認できます。
metrics.json
セッションの統計情報(処理ファイル数、削減量、所要時間など)が記録されます。処理履歴の確認や次回実行時の見積もりに使用されます。
configs.json
実行時の設定情報が記録されます。トラブルシューティング時に、どのような設定で実行されたかを確認できます。
セッション保持期間
古いセッションディレクトリは自動的に削除されます。
デフォルト保持期間: 28日間
カスタマイズ:
lightfile-batch local /path/to/images --session-retention-days 7dir:
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は、同一マシン上で複数のプロセスが同時に起動しないよう排他制御を行っています。
詳しくは 排他制御 をご覧ください。
関連ページ
- 排他制御 - プロセスの重複実行を防ぐ仕組み
- YAML設定ファイル - ディレクトリ設定の完全リファレンス
- バックアップモード - バックアップディレクトリの詳細
- トラブルシューティング - セットアップの問題 - よくある問題と解決方法