backup:clean — バックアップをクリーンアップするコマンド
artisan
backup:clean
一言で言うと:古いバックアップファイルを一括削除する Artisan コマンドです。
| カテゴリ |
掲載バージョン |
FQCN / コマンド |
関連 |
変更履歴 |
| artisan |
Laravel 12 / PHP 8.4 |
php artisan backup:clean |
backup:run, backup:check, backup:delete |
v3.0.0 で追加(Spatie Laravel Backup 3.x 以降) |
要点(TL;DR)
- 使い方:
php artisan backup:clean
- 主なオプション:
--days(削除対象の最低保持日数)、--force(確認プロンプトをスキップ)
- 落とし穴:設定ファイル
config/backup.php の delete_backup_on_create が false の場合、削除は実行されません。
概要
backup:clean は、Spatie の Laravel Backup パッケージにより提供される Artisan コマンドで、設定された保持期間より古いバックアップファイルを自動で検出し、削除します。
削除対象はローカルストレージ、S3、GCS など、設定に応じて異なります。
コマンド構文
php artisan backup:clean [options]
| オプション |
型 |
必須 |
既定値 |
説明 |
--days |
int |
いいえ |
config('backup.retention', 7) |
削除対象とする最小保持日数。指定した日数より古いバックアップを削除。 |
--force |
bool |
いいえ |
false |
確認プロンプトをスキップして即座に削除。 |
--no-interaction |
bool |
いいえ |
false |
インタラクティブプロンプトを無効化。 |
--quiet |
bool |
いいえ |
false |
出力を最小限に抑える。 |
--help |
bool |
いいえ |
false |
コマンドヘルプを表示。 |
戻り値:0(成功)または 1(エラー)
使用例
最小構成
php artisan backup:clean
実務例
# 30日以上古いバックアップを削除し、確認プロンプトをスキップ
php artisan backup:clean --days=30 --force
よくある落とし穴・注意点
| 問題 |
原因 |
対策 |
| 保持期間が適用されない |
config/backup.php の delete_backup_on_create が false |
true に設定し、パッケージを再インストール |
| 大量削除で時間がかかる |
クラウドストレージ(S3 等)で大量ファイルを削除 |
--quiet を併用し、ログレベルを下げる |
| 権限エラー |
アプリケーションユーザーにストレージ権限が不足 |
chmod / chown を適切に設定 |
代替・関連コマンドとの比較
| コマンド |
主な違い |
選択基準 |
backup:clean |
保持期間に基づき自動で削除 |
バックアップのみを対象にしたい |
php artisan storage:prune |
ストレージ全般の古いファイルを削除 |
バックアップ以外も含めてクリーンアップしたい |
backup:delete |
指定ファイルを手動で削除 |
期間ではなくファイル単位で削除したい |
テスト例(Pest)
use Spatie\Backup\BackupSettings;
use Spatie\Backup\Tasks\Clean\CleanBackups;
it('removes backups older than the retention period', function () {
$settings = BackupSettings::make()
->deleteBackupsOlderThan(30);
$cleaner = CleanBackups::make($settings);
// ダミーのバックアップファイルを作成
// $cleaner->run();
// 古いファイルが削除されたことを確認
expect($cleaner->filesDeleted())->toBeGreaterThan(0);
});
トラブルシュート
| エラー |
原因 |
対処 |
Permission denied |
ストレージの書き込み権限不足 |
chmod / chown で権限を付与 |
No backups found |
保持期間が短すぎる、または設定が誤っている |
--days を増やす、または config/backup.php を確認 |
Command aborted |
確認プロンプトで n を入力 |
--force オプションを付けて実行 |
参考リンク