リモートファイルシステム概要
LightFile Batchはローカルファイルシステムだけでなく、様々なリモートファイルシステム上の画像ファイルを直接最適化できます。
画像ファイルと同じサーバーで実行する必要はなく、LightFile専用のサーバーを用意し、そこから定期的にリモートサーバーの画像を最適化するという構成が可能です。既存のSFTPやWebDAVなど、デザイナーやコンテンツ管理のために用意された入り口を流用できるため、Webサーバー自体に変更を加えることなく画像最適化を導入できます。
対応プロトコル
- FTP/FTPS - 従来型のファイル転送プロトコル
- SFTP - SSH経由のセキュアなファイル転送
- WebDAV - HTTP/HTTPSベースのファイル共有(NextCloud、ownCloud等)
- S3/S3互換プロトコル - Amazon S3、MinIO、Wasabi等のオブジェクトストレージ
| ファイルシステム | サブコマンド | プロトコル | 用途 |
|---|---|---|---|
| FTP/FTPS | ftp | FTP, FTPS | レガシーサーバー、共有ホスティング |
| SFTP | sftp | SSH File Transfer Protocol | セキュアなファイル転送 |
| WebDAV | webdav | HTTP/HTTPS WebDAV | NextCloud, ownCloud等 |
| S3/S3互換 | s3 | Amazon S3 API(互換プロトコル含む) | Amazon S3、MinIO、Wasabi等 |
共通の機能
すべてのリモートファイルシステムで以下の機能が利用できます。
- ファイルフィルタ - 拡張子、サイズ、更新日時、glob パターンでフィルタ
- 並列処理 - 複数ファイルの同時処理
- バックアップ - ローカルまたはS3へのバックアップ
- 簡易データベース管理 - 処理済みファイルの記録により重複処理を回避
- 進捗表示 - リアルタイムの進捗ログ
- タイムアウト設定 - 接続やデータ転送のタイムアウト時間を調整可能
補足: FTP/SFTP/WebDAVでは処理対象ディレクトリを--ftp-dir/--sftp-dir/--webdav-dir(YAMLでは batch.dir)で指定します。S3系コマンドではプレフィックスを--s3-prefixで指定し、位置引数での指定はできません。
処理対象ディレクトリとベースパス
FTP/SFTP/WebDAVの処理対象ディレクトリ(batch.dir)は、ベースパスの下のディレクトリです。その下だけをたどります。
| ファイルシステム | 処理の起点(ベースパス) | 処理対象ディレクトリ |
|---|---|---|
| FTP | --ftp-base-path / batch.ftp.basePath(未指定ならログイン直後のディレクトリ) | --ftp-dir / batch.dir |
| SFTP | --sftp-base-path / batch.sftp.basePath(未指定ならログイン直後のディレクトリ) | --sftp-dir / batch.dir |
| WebDAV | --webdav-url / batch.webdav.url のURLそのもの | --webdav-dir / batch.dir |
| S3 | バケット | --s3-prefix / batch.s3.prefix(batch.dir は使わない) |
| ローカル | — | 引数のディレクトリ / batch.dir がそのまま起点 |
- 先頭の
/は無視されます。指定したディレクトリが存在しない場合は、エラーで止まります - 処理済みの記録(相対パス)とプロジェクトは、ベースパスを基準にしています。FTP/SFTPのプロジェクトを決めるURLは
<scheme>://<user>@<host>:<port><basePath>です。dirを変えても、処理済みの記録はそのまま引き継がれます
v6.0.8 までの挙動
v6.0.8 までは、FTP/SFTP/WebDAVで --ftp-dir / --sftp-dir / --webdav-dir / batch.dir が無視され、ベースパス(未指定ならログイン直後のディレクトリ)の下をすべて処理していました。v6.0.10 から、指定したディレクトリの下だけを処理します。
YAML設定ファイルだけで実行する
v6.0.10 から使えます。接続設定は batch.ftp / batch.sftp / batch.webdav / batch.s3 の下に書き、batch.fileSystem でファイルシステムを指定します。サブコマンドを付けずに -c だけを渡すと、batch.fileSystem に従って実行します。
# job.yaml
batch:
fileSystem: sftp
dir: uploads
sftp:
host: sftp.example.com
user: myuser
privateKeyPath: ~/.ssh/id_rsa
basePath: /var/www/htmllightfile-batch -c job.yaml詳細は YAML設定ファイルの使い方 を参照してください。
タイムアウト設定
リモートファイルシステムではタイムアウト時間を調整できます。
タイムアウトの種類
LightFile Batchは処理の性質に応じて2種類のタイムアウト時間を設定できます。
短いタイムアウト(Short Timeout):
- ファイルの日付やサイズの取得
- ディレクトリの存在確認
- その他の軽量な操作
長いタイムアウト(Long Timeout):
- ファイルのダウンロード
- ファイルのアップロード
- ファイルリストの取得
- その他の長時間を要する可能性がある処理
プロトコル別のタイムアウト設定
| プロトコル | CLIオプション | YAML設定 | デフォルト値 |
|---|---|---|---|
| FTP | --ftp-short-timeout--ftp-long-timeout | batch.ftp.shortTimeoutbatch.ftp.longTimeout | 30秒 300秒 |
| SFTP | --sftp-short-timeout--sftp-long-timeout | batch.sftp.shortTimeoutbatch.sftp.longTimeout | 30秒 300秒 |
| WebDAV | --webdav-short-timeout--webdav-long-timeout | batch.webdav.shortTimeoutbatch.webdav.longTimeout | 30秒 300秒 |
| S3 | なし | なし | AWS SDK のデフォルト |
設定例
FTP
コマンドライン:
lightfile-batch ftp \
--ftp-host ftp.example.com \
--ftp-user myuser \
--ftp-short-timeout 60 \
--ftp-long-timeout 600YAML設定ファイル:
batch:
fileSystem: ftp
ftp:
host: ftp.example.com
user: myuser
shortTimeout: 60
longTimeout: 600SFTP
コマンドライン:
lightfile-batch sftp \
--sftp-host sftp.example.com \
--sftp-user myuser \
--sftp-short-timeout 60 \
--sftp-long-timeout 600YAML設定ファイル:
batch:
fileSystem: sftp
sftp:
host: sftp.example.com
user: myuser
shortTimeout: 60
longTimeout: 600WebDAV
コマンドライン:
lightfile-batch webdav \
--webdav-url https://webdav.example.com/dav/ \
--webdav-user myuser \
--webdav-short-timeout 60 \
--webdav-long-timeout 600YAML設定ファイル:
batch:
fileSystem: webdav
webdav:
url: https://webdav.example.com/dav/
user: myuser
shortTimeout: 60
longTimeout: 600