LightFile Batchへの移行
旧LightFileからLightFile Batchへの移行ガイド
このガイドでは、旧LightFile(v6.0.0未満)からLightFile Batch(v6.0.0以上)への移行方法を説明します。
LightFile Batchの位置づけ
LightFile Batchは、定期的なバッチ処理に特化したCLIツールで、旧LightFile Command版の直接の後継製品です。旧版の主要機能を継承しつつ、性能向上と機能強化を実現しています。
- 主な用途: cron/スケジューラによる定期実行、継続的な画像最適化
- 対応環境: ローカル、FTP、SFTP、WebDAV、S3/S3互換ストレージ
- 特徴: 処理済みファイルの管理、バックアップ機能、進捗表示、エラー通知
この移行ガイドが適している方
- 定期的なバッチ処理を行っている
- リモートファイルシステムを使用している
- バックアップや通知機能が必要
- 処理済みファイルのスキップで効率化したい
もしワンタイム処理が中心でシンプルなツールを求めている場合は、LightFile Shotへの移行ガイドも検討してください。
インストール方法の充実
旧LightFileでは実行ファイルのダウンロードのみでしたが、LightFile Batchでは複数のパッケージマネージャーおよびインストーラーから選択できます:
- Linux: APT (Ubuntu/Debian)、YUM/DNF (RHEL/CentOS/Fedora)、Shell Script、Direct Binary
- macOS: Shell Script、Direct Binary
- Windows: Chocolatey、Scoop、PowerShell Script、Direct Binary
詳細はインストールガイドを参照してください。
機能対応表
| 機能カテゴリ | 旧LightFile | LightFile Batch | 変更内容 |
|---|---|---|---|
| 基本機能 | |||
| JPEG最適化 | ✅ | ✅ | 引き続き対応、高速化 |
| PNG最適化 | ✅ | ✅ | 引き続き対応、高速化 |
| 品質設定(低・中・高) | ✅ | ✅ | 引き続き対応 |
| 並列処理 | ✅ | ✅ | 引き続き対応 |
| ドライランモード | ✅ | ✅ | 引き続き対応 |
| 対応ファイルシステム | |||
| ローカルファイルシステム | ✅ | ✅ | localサブコマンド |
| FTP/FTPS | ✅ | ✅ | ftpサブコマンド、暗黙的TLS対応 |
| SFTP | ✅ | ✅ | sftpサブコマンド |
| WebDAV | ✅ | ✅ | webdavサブコマンド |
| S3/S3互換ストレージ | ✅ | ✅ | s3サブコマンド |
| ファイルフィルタリング | |||
| ファイルサイズフィルタ | ✅ | ✅ | --min-size, --max-size |
| 拡張子フィルタ | ✅ | ✅ | --ext |
| Globパターン(include) | ✅ | ✅ | --include |
| Globパターン(exclude) | ✅ | ✅ | --exclude |
| 更新日時フィルタ | ✅ | ✅ | --after, --before |
| 処理済みファイル管理 | |||
| KVSによる処理済み管理 | ✅ | ✅ | 引き続き対応、高速化 |
| インデックスファイル | ✅ | ✅ | --index-file, --index-remote-file |
| ローカルインデックス | ✅ | ✅ | --index-file |
| リモートインデックス | ❌ | ✅ | 新機能: --index-remote-file |
| バックアップ | |||
| 自動バックアップ(ローカル) | ✅ | ✅ | 引き続き対応、ディスク容量管理強化 |
| 自動バックアップ(S3) | ❌ | ✅ | 新機能: S3バックアップ対応 |
| バックアップモード設定 | ❌ | ✅ | 新機能: strict/loose/none |
| ディスク容量管理 | ❌ | ✅ | 新機能: 自動削除機能 |
| ログ・通知 | |||
| 進捗表示 | ✅ | ✅ | 強化、よりリアルタイムに |
| ログレベル設定 | ✅ | ✅ | --log-level |
| Slack通知 | ✅ | ✅ | --notify-slack-webhook-url |
| Email通知(SMTP) | ✅ | ✅ | --notify-smtp-* |
| 簡易Email通知 | ❌ | ✅ | 新機能: --notify-email-* |
| 通知のテスト送信 | ❌ | ✅ | 新機能: test-notifyサブコマンド |
| 設定管理 | |||
| コマンドラインオプション | ✅ | ✅ | 引き続き対応 |
| YAML設定ファイル | ❌ | ✅ | 新機能: --config |
| 環境変数 | ✅ | ✅ | LF_TOKEN, LOG_LEVEL |
| その他 | |||
| ライセンス管理 | ✅ | ✅ | トークンベースに変更 |
| シリアルコード認証 | ✅ | ❌ | 廃止: トークンに変更 |
分析モード(--analyze) | ✅ | ❌ | 廃止 |
| HTTPサイズ検証 | ✅ | ❌ | 廃止 |
| エラーリトライ | ✅ 設定可能 | ✅ 自動 | 自動実行(設定不可) |
| 排他制御 | ✅ --pid | ✅ 自動 | 旧版はPIDファイル指定、Batchは自動実行 |
| プロキシ設定 | ✅ --proxy | ✅ 環境変数 | HTTP_PROXY/HTTPS_PROXYで対応 |
新しく追加された機能
1. サブコマンド方式
ファイルシステムごとに最適化されたサブコマンドを提供します。
lightfile-batch local /path/to/images # ローカル
lightfile-batch s3 --s3-bucket my-bucket # S3
lightfile-batch ftp --ftp-host ftp.example.com # FTP2. YAML設定ファイル
複雑な設定をYAMLファイルで管理できます。
dir:
system: ~/.lightfile-next/batch
backup:
mode: strict
fileSystem: s3
s3:
bucket: my-backup-bucket
optimization:
quality: medium3. バックアップの強化
- S3バケットへのバックアップ対応
- バックアップモード(
strict/loose/none) - ディスク容量の自動管理
重要な注意点: LightFile Batchは、既にLightFileで最適化済みのファイルのバックアップを作成しません。旧LightFileで作成したバックアップは引き続き保持することを推奨します。詳細はバックアップ概要を参照してください。
4. リモートインデックスファイル
S3バケット内のインデックスファイルを直接読み込めます。
lightfile-batch s3 \
--s3-bucket my-bucket \
--s3-acl private \
--index-remote-file index.tsv5. 通知のテスト送信
test-notifyサブコマンドで通知設定をテストできます。
lightfile-batch test-notify \
--notify-smtp-to admin@example.com \
--notify-smtp-host smtp.example.com廃止された機能
1. 分析モード(--analyze)
Excel用のTSV分析ファイルを生成する機能は廃止されました。
代替案: ジャーナル機能や外部ツールで分析
2. HTTPサイズ検証(--http-verify)
HTTP経由でファイルサイズを検証する機能は廃止されました。
3. リトライ回数設定(--file-error-retry)
リトライ回数を設定する機能は廃止されました。エラーリトライ自体は自動的に実行されます。
4. 排他制御のPIDファイル指定(--pid)
排他制御のためのPIDファイルパスを指定する機能は廃止されました。排他制御は自動的に実行され、--non-exclusiveで無効化できます。
5. プロキシ設定オプション(--proxy)
--proxyオプションは廃止されました。
代替案: 環境変数HTTP_PROXY/HTTPS_PROXYを使用
コマンドの変更点
基本構文の変更
旧LightFile
lightfile --file-system <type> --dir <path> [options]LightFile Batch
lightfile-batch <サブコマンド> <path> [options]変更点:
--file-systemオプション → サブコマンドに変更--dirオプション → 位置引数に変更- 実行ファイル名が
lightfile-batchに変更
ライセンス認証の変更
旧LightFile
--serial <code>LightFile Batch
--license-token <token> # または -l優先順位:
--license-token- 環境変数
LF_TOKEN - ファイル
~/.lightfile-next/token
ファイルシステム指定の変更
旧LightFile
lightfile --file-system local --dir /path/to/images
lightfile --file-system s3 --s3-bucket my-bucket --s3-region us-west-2
lightfile --file-system ftp --host ftp.example.com --user myuserLightFile Batch
lightfile-batch local /path/to/images
lightfile-batch s3 --s3-bucket my-bucket --s3-region us-west-2
lightfile-batch ftp --ftp-host ftp.example.com --ftp-user myuser変更点:
- サブコマンド方式の採用
- オプション名の変更(例:
--host→--ftp-host)
バックアップオプションの変更
旧LightFile
--no-backup # バックアップ無効
--backup-dir /path/to/backup # バックアップ先ディレクトリLightFile Batch
--backup-mode none # バックアップ無効
--no-backup # バックアップ無効(エイリアス)
--backup-dir /path/to/backup # ローカルバックアップ先
# S3バックアップ(新機能)
--backup-fs s3 \
--backup-s3-bucket my-backup-bucket \
--backup-s3-region us-west-2
# バックアップモード(新機能)
--backup-mode strict # 必須(デフォルト)
--backup-mode loose # 失敗しても続行
--backup-mode none # 無効通知オプションの変更
旧LightFile
--fatal-notify-email "admin@example.com"
--fatal-notify-slack-webhook-url "https://..."
--slack-log "https://..."LightFile Batch
# SMTP Email
--notify-smtp-to admin@example.com
--notify-smtp-from lightfile@example.com
--notify-smtp-host smtp.example.com
# Slack
--notify-slack-webhook-url https://...
--notify-slack-channel #alerts
# 簡易Email通知(新機能)
--notify-email-to admin@example.com
--notify-email-cc manager@example.com変更点:
--fatal-notify-*→--notify-*に統一- SMTP、簡易Email通知、Slackの通知方法を明確に分離
ログオプションの変更
旧LightFile
--logging debug
--logging quiet
--progressLightFile Batch
--log-level debug # ログレベル
--quiet, -q # 静音モード
--verbose, -v # 詳細ログ
--log-progress-interval 30s # 進捗表示間隔変更点:
--logging→--log-levelに変更- 進捗表示の間隔を指定可能(
--log-progress-interval)
並列処理オプションの変更
旧LightFile
# 自動的に並列処理
--serial # 順次処理モードLightFile Batch
--concurrency 4 # 並列処理数
-j 4 # 短縮形変更点:
- デフォルトは順次処理(
--concurrency 1) - 並列数を明示的に指定
移行例
例1: ローカルディレクトリの定期最適化
旧LightFile
lightfile --dir /var/www/images \
--serial ABC123 \
--quality medium \
--exclude "**/thumbnails/**" \
--file-size 100kb-5mbLightFile Batch
# 事前にライセンストークンを設定
echo "your-token" > ~/.lightfile-next/token
# 実行
lightfile-batch local /var/www/images \
--quality medium \
--exclude "**/thumbnails/**" \
--min-size 100kb \
--max-size 5mb変更点:
lightfile→lightfile-batch local--serial→ ライセンストークンファイル--file-size→--min-size/--max-size--dirオプション → 位置引数
例2: S3バケットの最適化
旧LightFile
lightfile --file-system s3 \
--serial ABC123 \
--s3-bucket my-bucket \
--s3-region us-west-2 \
--s3-acl public-read \
--quality highLightFile Batch
lightfile-batch s3 \
--s3-bucket my-bucket \
--s3-region us-west-2 \
--s3-acl public-read \
--quality high変更点:
--file-system s3→s3サブコマンド- ライセンストークンは事前設定またはYAML設定ファイルで指定
例3: FTPサーバーの最適化
旧LightFile
lightfile --file-system ftp \
--serial ABC123 \
--host ftp.example.com \
--user ftpuser \
--password ftppassword \
--port 21 \
--secure \
--exclude "**/temp/**"LightFile Batch
lightfile-batch ftp \
--ftp-host ftp.example.com \
--ftp-user ftpuser \
--ftp-password ftppassword \
--ftp-port 21 \
--ftp-use-tls \
--exclude "**/temp/**"変更点:
--file-system ftp→ftpサブコマンド--host→--ftp-host--user→--ftp-user--secure→--ftp-use-tls
例4: バックアップ付きローカル処理
旧LightFile
lightfile --dir /var/www/images \
--serial ABC123 \
--backup-dir /mnt/backup \
--quality mediumLightFile Batch(ローカルバックアップ)
lightfile-batch local /var/www/images \
--backup-dir /mnt/backup \
--backup-mode strict \
--quality mediumLightFile Batch(S3バックアップ、新機能)
lightfile-batch local /var/www/images \
--backup-fs s3 \
--backup-s3-bucket my-backup-bucket \
--backup-s3-region us-west-2 \
--backup-mode strict \
--quality medium変更点:
- S3バックアップに対応(新機能)
- バックアップモードを明示的に指定可能
例5: Slack通知付きバッチ処理
旧LightFile
lightfile --dir /var/www/images \
--serial ABC123 \
--fatal-notify-slack-webhook-url https://hooks.slack.com/services/YOUR/WEBHOOK/URL \
--quality mediumLightFile Batch
lightfile-batch local /var/www/images \
--notify-slack-webhook-url https://hooks.slack.com/services/YOUR/WEBHOOK/URL \
--notify-slack-channel #alerts \
--quality medium変更点:
--fatal-notify-slack-webhook-url→--notify-slack-webhook-url- チャンネル指定が可能(
--notify-slack-channel)
例6: 並列処理の活用
旧LightFile
# 自動的に並列処理
lightfile --dir /var/www/images --serial ABC123LightFile Batch
# 並列処理数を明示的に指定
lightfile-batch local /var/www/images --concurrency 4
# またはCPUコア数を使用
lightfile-batch local /var/www/images -j $(nproc)変更点:
- デフォルトは順次処理(
--concurrency 1) - 高速化するには
-jオプションで並列数を指定
YAML設定ファイルの使用
複雑な設定はYAMLファイルで管理できます。
設定ファイル例(config.yaml)
# ライセンス
license:
token: your-license-token-here
# システムディレクトリ
dir:
system: ~/.lightfile-next/batch
# ログ設定
log:
level: info
progressInterval: 30s
# バックアップ設定
backup:
mode: strict
fileSystem: s3
s3:
bucket: my-backup-bucket
region: us-west-2
acl: private
# 最適化設定
optimization:
quality: medium
concurrency: 4
# 通知設定
notify:
slack:
webhookUrl: https://hooks.slack.com/services/YOUR/WEBHOOK/URL
channel: #alerts
smtp:
to: admin@example.com
from: lightfile@example.com
host: smtp.example.com
port: 587
user: smtp_user
password: smtp_password
useTLS: true
# ローカルファイルシステム設定
local:
dir: /var/www/images
minSize: 100kb
maxSize: 5mb
extensions:
- .jpg
- .jpeg
- .png
exclude:
- "**/thumbnails/**"
- "**/temp/**"使用方法
# 設定ファイルを指定
lightfile-batch --config config.yaml local
# 複数の設定ファイルを指定(後から読み込まれたものが優先)
lightfile-batch -c base.yaml -c production.yaml localcron/スケジューラでの実行
cronでの実行例
# crontab -e
# 毎時0分に実行
0 * * * * /usr/local/bin/lightfile-batch --config /etc/lightfile/config.yaml local /var/www/images >> /var/log/lightfile-batch.log 2>&1
# 毎日深夜2時に実行(バックアップ付き)
0 2 * * * /usr/local/bin/lightfile-batch --config /etc/lightfile/config.yaml local /var/www/images --backup-fs s3 --backup-s3-bucket my-backup-bucket >> /var/log/lightfile-batch.log 2>&1systemd timerでの実行例
サービスファイル(/etc/systemd/system/lightfile-batch.service)
[Unit]
Description=LightFile Batch Image Optimization
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/lightfile-batch --config /etc/lightfile/config.yaml local /var/www/images
StandardOutput=journal
StandardError=journal
User=www-data
Group=www-data
[Install]
WantedBy=multi-user.targetタイマーファイル(/etc/systemd/system/lightfile-batch.timer)
[Unit]
Description=LightFile Batch Timer
Requires=lightfile-batch.service
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target有効化
sudo systemctl daemon-reload
sudo systemctl enable lightfile-batch.timer
sudo systemctl start lightfile-batch.timer
# ステータス確認
sudo systemctl status lightfile-batch.timer次のステップ
- LightFile Batchドキュメント - 完全なドキュメント
- 機能比較表 - 詳細な機能対応表
- 性能改善について - 性能改善の詳細
- コマンドの変更点 - コマンドラインオプションの対応表