You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spatie Laravel-backup清理成功但未删除旧备份问题求助

解决spatie/laravel-backup备份清理不生效的问题

1. 先明确默认清理规则的实际逻辑

spatie/laravel-backup 6.x的默认清理配置(config/backup.php的cleanup段)并非单纯保留最近16天备份,而是一套组合策略:

  • 最近24小时内,每小时保留1个备份
  • 最近7天内,每天保留1个备份
  • 最近1个月内,每周保留1个备份
  • 最近1年内,每月保留1个备份
  • 超过1年的备份全部删除

你提到的“默认保留16天”是对默认配置的误解,若要强制只保留最近16天备份,需自定义清理规则。

2. 自定义清理规则(强制保留16天)

修改config/backup.php中的cleanup配置,替换为单一的按备份时长清理策略:

'cleanup' => [
    'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\AgeBasedStrategy::class,
    'strategy_config' => [
        'keep_all_backups_for_days' => 16,
        'keep_daily_backups_for_days' => 0,
        'keep_weekly_backups_for_weeks' => 0,
        'keep_monthly_backups_for_months' => 0,
        'keep_yearly_backups_for_years' => 0,
    ],
],

该配置会直接删除所有超过16天的备份,仅保留最近16天内的所有备份文件。

3. 验证命令执行细节

即便收到成功通知,仍需确认清理逻辑是否真的生效:

  • 手动执行php artisan backup:clean --debug,查看输出日志,确认是否触发了旧备份删除操作
  • 检查服务器cron日志(通常在/var/log/cron或/var/log/syslog),确认schedule:run每分钟正常执行,且backup:clean无执行报错
  • 查看storage/app/Laravel下备份文件的修改时间,手动执行clean后对比文件数量变化

4. 检查存储目录权限

确保Laravel存储目录有足够权限让服务器用户(通常为www-data或nginx)删除文件:

chown -R www-data:www-data storage/app/Laravel
chmod -R 755 storage/app/Laravel

5. 确认备份通知的准确性

部分情况下,成功通知仅代表命令执行完成,不代表清理逻辑实际删除了文件。手动执行backup:clean后,直接查看存储目录的文件数量,确认是否有旧备份被移除。


内容的提问来源于stack exchange,提问作者Taten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:31:17