ローカルバックアップ
ローカルファイルシステムにバックアップを保存します。
基本的な使い方
コマンドライン:
lightfile-batch local /path/to/images --backup-dir /path/to/backupYAML設定ファイル:
backup:
fileSystem: local
mode: strict
dir:
backup: /path/to/backup
local:
dir: /path/to/imagesデフォルトのバックアップ先
デフォルトでは以下の場所にバックアップが保存されます。
~/.lightfile-next/batch/<project>/backup/容量管理
LightFile Batchは、バックアップファイルが増えすぎたときに古いバックアップを一定のルールで削除して、ディスクの空き容量が尽きないようにする仕組みを設けています。
推奨: 空き容量ベースの管理を使用
ローカルバックアップでは、ディスク空き容量ベースの管理を推奨します。
バックアップサイズベースの管理はディレクトリ全体をスキャンするため、バックアップ容量が大きいと処理に時間がかかります。
ディスク空き容量ベース(推奨)
ディスクの空き容量を監視し、しきい値を下回ったら古いバックアップから順に削除します。
コマンドライン:
lightfile-batch local /path/to/images \
--backup-dir /path/to/backup \
--backup-free-space-threshold 10gb \
--backup-target-free-space 15gbYAML設定ファイル:
backup:
freeSpaceThreshold: 10gb # しきい値: この値を下回ったらクリーンアップ
targetFreeSpace: 15gb # 目標値: クリーンアップ後に確保する空き容量
dir:
backup: /path/to/backup
local:
dir: /path/to/images動作:
- 空き容量が
freeSpaceThreshold(10GB)を下回る - 古いバックアップから順に削除
- 空き容量が
targetFreeSpace(15GB)以上になるまで削除を続行
容量管理を何も指定しないときは、この空き容量ベース(10GB / 15GB)が使われます(v6.1.0 から。v6.0.x では指定しないと削除しませんでした)。 自動削除を止めるには freeSpaceThreshold: "0" を指定します。
開始時に必要な空き容量(非常用の下限)
v6.1.0 から、処理を始める前にバックアップ先の空き容量を1回だけ確かめ、足りなければ何も処理せずに終了できます。
backup:
requiredFreeSpace: 5gb # これを下回っていたら処理せずに終了(コマンドラインは --backup-required-free-space)確かめるのは開始時だけで、処理の途中では確かめません。 各実行の掃除を止めて、複数のプロジェクトをまとめて掃除する運用(下の「複数のプロジェクトをまとめて掃除する」)では、掃除は全部の実行が終わった後にしか走りません。 そのため、長い処理の途中でディスクが尽きないように、この下限を指定しておくことをおすすめします。 --dry-run では確かめません。
バックアップサイズベース
バックアップディレクトリの合計サイズを管理します。
コマンドライン:
lightfile-batch local /path/to/images \
--backup-dir /path/to/backup \
--backup-max-total-size 50gb \
--backup-target-total-size 40gbYAML設定ファイル:
backup:
maxTotalSize: 50gb # 最大サイズ: この値を超えたらクリーンアップ
targetTotalSize: 40gb # 目標サイズ: クリーンアップ後の目標サイズ
dir:
backup: /path/to/backup
local:
dir: /path/to/images動作:
- バックアップの合計サイズが
maxTotalSize(50GB)を超える - 古いバックアップから順に削除
- 合計サイズが
targetTotalSize(40GB)以下になるまで削除を続行
複数のプロジェクトをまとめて掃除する(v6.1.0 から)
上の容量管理はその実行のプロジェクトのバックアップだけを対象にします。1台のサーバーで複数の対象 (本番と検証、複数のサイトなど)を処理していると、プロジェクトごとにバックアップが分かれるため、
- 空き容量ベースでは、空きが足りないことに気づいたプロジェクトが自分のバックアップから消します。 別のプロジェクトにもっと古いバックアップが残っていても、そちらは消えません
- サイズベースでは、プロジェクトごとに上限を割り振るしかなく、合計がディスクに収まるかは別に管理が要ります
backup clean サブコマンドはシステムディレクトリの下にある全プロジェクトのバックアップを1つの列として扱い、 どのプロジェクトのものかに関係なく古いファイルから消します。
コマンドライン:
# 空きが 20GB を下回っていたら、30GB になるまで古いバックアップから消す
lightfile-batch backup clean --min-free 20gb --target-free 30gb
# 消す予定だけを表示する(何も消さない)
lightfile-batch backup clean --min-free 20gb --target-free 30gb --dry-run| オプション | 説明 |
|---|---|
--min-free <size> | 空き容量がこれを下回ったら掃除する(必須) |
--target-free <size> | 掃除の後に確保する空き容量(必須。--min-free より大きく) |
--dir <path> | dir.backup でシステムディレクトリの外に置いたバックアップも含める(複数指定可) |
--system-dir <path> | システムディレクトリ(既定: ~/.lightfile-next/batch) |
--dry-run, -n | 消す予定のファイル数と容量をプロジェクトごとに表示するだけ |
動作:
- 空き容量が
--min-free以上なら何もしない - 全プロジェクトの
backup/を走査し、更新日時の古い順に並べる - 空き容量が
--target-freeになるまで、古いものから消す。中身が空になったディレクトリも消す (各プロジェクトのbackup/自体と、処理済みの記録・セッションには触れない)
処理と同じ排他ロック(排他制御)を取るので、バッチの処理中には動きません (「別のプロセスが実行中のため終了します」で終わります)。
定期実行での使い方: 各ジョブでは容量管理を指定せず、ジョブを流す前に1回だけ backup clean を実行します。
#!/bin/bash
lightfile-batch backup clean --min-free 20gb --target-free 30gb
lightfile-batch -c /etc/lightfile/site-a.yaml
lightfile-batch -c /etc/lightfile/site-b.yaml全プロジェクトのバックアップが同じディスクにあること
空き容量はディスク単位なので、別のディスクにあるディレクトリが混ざると止まります。