Spatie/laravel-backup 可实现 Laravel 项目数据自动备份,支持本地与云存储;配置 backup.php 定义备份源、目标磁盘及排除目录;通过 Artisan 命令手动或定时执行备份与恢复;结合 Laravel 调度任务 daily 备份并清理旧文件;支持监控备份状态与容量限制,保障生产环境数据安全。

使用 Spatie/laravel-backup 包可以轻松实现 Laravel 项目的数据库、文件等数据的自动备份。它支持将备份保存到本地或云存储(如 Amazon S3、FTP、Dropbox 等),并可配置自动清理旧备份,非常适合生产环境的数据保护。
安装 Spatie/laravel-backup 包
在 Laravel 项目根目录下运行以下命令安装包:
composer require spatie/laravel-backup
安装完成后,发布配置文件:
php artisan vendor:publish –provider=”SpatieBackupBackupServiceProvider”
该命令会在 config/backup.php 生成配置文件,后续所有设置都可通过此文件调整。
立即进入“豆包AI人工智官网入口”;
立即学习“豆包AI人工智能在线问答入口”;
配置 backup.php 文件
打开 config/backup.php,主要配置项包括:
- backup.source.files.include:指定要备份的目录,例如:
['/var/www/html/myproject'] - backup.source.files.exclude:排除不需要备份的目录,如
['/var/www/html/myproject/storage', '/var/www/html/myproject/vendor'] - backup.source.databases:选择需要备份的数据库连接,如
['mysql'] - backup.destination.disks:设置备份存储位置,常见选项有
local、s3、ftp等
示例配置(保存到本地和 S3):
‘destination’ => [ ‘disks’ => [‘local’, ‘s3’], ],
确保 config/filesystems.php 中已正确配置对应磁盘,如 S3 需填写 key、secret、region 和 bucket 名称。
执行备份操作
使用 Artisan 命令手动触发备份:
php artisan backup:run
该命令会按配置打包文件和数据库,并上传到指定磁盘。
如果只想备份数据库:
php artisan backup:run –only-db
只备份文件:
php artisan backup:run –only-files
自动定时备份
Laravel 自带任务调度功能,可在 app/console/Kernel.php 中添加计划任务:
$schedule->command(‘backup:clean’)->daily()->at(’01:00′);
$schedule->command(‘backup:run’)->daily()->at(’02:00′);
上述配置每天凌晨 1 点清理旧备份,2 点执行完整备份。
注意:需确保服务器的 crontab 添加了 Laravel 调度执行命令:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/NULL 2>&1
备份清理策略
在 backup.php 中的 monitor_backups 配置可用于定义保留策略,例如:
‘monitorBackups’ => [ [ ‘name’ => ‘local’, ‘disks’ => [‘local’], ‘newestBackupsShouldNotBeOlderThanDays’ => 1, ‘storageUsedMayNotBeHigherThanMegabytes’ => 5000, ], ],
该配置监控本地备份:最新备份不能超过 1 天,总大小不超过 5000MB,否则会触发通知。
查看备份与还原数据
查看当前备份列表:
php artisan backup:list
从备份中恢复数据(谨慎操作,会覆盖当前数据):
php artisan backup:restore latest
也可指定具体备份文件名进行还原。
基本上就这些。Spatie/laravel-backup 使用简单,配置灵活,是 Laravel 项目做数据保障的首选方案之一。合理设置备份频率和存储位置,能有效防止数据丢失风险。


