安装并配置Spatie的laravel-backup包后,通过设置文件与数据库备份源、指定存储磁盘、定义清理和运行计划,可实现Laravel应用的自动化备份;建议排除vendor和storage目录以减小体积,并测试通知机制确保备份成功。

要使用 Spatie 的 laravel-backup 包自动备份 Laravel 应用文件和数据库,只需完成安装、配置和调度三个步骤。整个过程简单高效,适合生产环境定期备份。
安装 laravel-backup 包
在 Laravel 项目根目录下通过 Composer 安装 Spatie 的备份包:
composer require spatie/laravel-backup
安装完成后,发布配置文件以便自定义备份行为:
php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"
这会在 config/backup.php 生成配置文件,后续可修改备份源、目标、清理策略等。
配置备份内容:应用文件与数据库
打开 config/backup.php,关键配置项如下:
- source.files.include:指定要备份的目录,如 app、bootstrap、config、routes、resources 等。
- source.files.exclude:排除不需要的目录,如 storage、vendor 等(避免体积过大)。
- source.databases:列出需要备份的数据库,如 mysql、pgsql 等。
示例配置片段:
'include' => [
base_path(),
],
'exclude' => [
base_path('vendor'),
storage_path(),
base_path('node_modules'),
],
'databases' => [
'mysql'
],
设置备份存储位置
在 config/filesystems.php 中配置磁盘,例如使用本地存储或云存储(如 S3、OSS):
'disks' => [
'backup' => [
'driver' => 'local',
'root' => storage_path('app/backups'),
],
],
然后在 config/backup.php 的 destination.disks 中添加 'backup':
'disks' => ['backup'],
测试备份命令
运行以下命令测试备份是否正常:
php artisan backup:run
如果成功,会在指定磁盘生成一个以日期命名的压缩包,包含应用文件和数据库 dump。
查看备份列表:
php artisan backup:list
自动定时备份
Laravel 自带任务调度,可在 app/Console/Kernel.php 中设置自动备份:
protected function schedule(Schedule $schedule)
{
$schedule->command('backup:clean')->daily()->at('01:00');
$schedule->command('backup:run')->daily()->at('02:00');
}
上述配置每天凌晨 1 点清理旧备份,2 点执行新备份。你也可以改为每周备份:
$schedule->command('backup:run')->weekly()->mondays()->at('03:00');
发送备份通知(可选)
支持通过邮件、Slack、Telegram 等接收备份状态通知。确保配置了 MAIL 或其他通知服务,然后在 config/backup.php 中启用:
'notifications' => [
'notifications' => [
\Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'],
\Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFound::class => ['mail'],
\Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'],
\Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'],
],
],
基本上就这些。只要配置好路径、存储和计划任务,Spatie 的 laravel-backup 就能稳定地自动备份你的 Laravel 应用和数据库,防止数据丢失。不复杂但容易忽略的是排除大目录和测试通知机制。建议首次部署后手动运行一次 backup:run 确认流程畅通。










