新闻中心 分类>>

laravel怎么使用Spatie的laravel-backup包自动备份应用和数据库_laravel Spatie backup应用与数据库备份方法

2026-01-05 00:00:00
浏览次数:
返回列表
安装并配置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.phpdestination.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 确认流程畅通。

搜索