mhmdomer/laravel-database-backup

使用简单的 artisan 命令备份您的 Laravel 数据库

1.0.0 2023-03-08 02:52 UTC

This package is auto-updated.

Last update: 2024-09-08 06:00:36 UTC


README

Laravel Database Backup

使用简单的 artisan 命令备份您的 Laravel 数据库

GitHub Tests Action Status GitHub Code Style Action Status Total Downloads Latest Stable Version License

此包允许您备份 Laravel 应用数据库,您还可以通过运行命令 php artisan database:backup 来选择通过电子邮件发送备份文件

支持的数据库

  • Mysql
  • Postgresql
  • sqlite

要求

  • 如果您使用 Mysql,请确保您的系统已安装 mysqldump
  • 如果您使用 Postgresql,请确保您的系统已安装 pg_dump

安装

您可以通过 composer 安装此包

composer require mhmdomer/laravel-database-backup

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag=database-backup

您可以为 maximum_backup_files 配置设置,以及当发生备份时是否发送电子邮件,还可以指定发送备份文件到的电子邮件地址

这是已发布的配置文件的内容

return [

    /*
    |-------------------------------------------------------------------------
    | Backup Folder
    |-------------------------------------------------------------------------
    |
    | The path of the folder to save backups on and retrieve backups from.
    */

    'backup_folder' => storage_path('app/backup'),

    /*
    |-------------------------------------------------------------------------
    | Maximum Backup Files
    |-------------------------------------------------------------------------
    |
    | The maximum number of files that should be present inside the backup folder,
    | each new backup after this limit will result in removing the oldest backup file
    */

    'maximum_backup_files' => 10,

    /*
    |-------------------------------------------------------------------------
    | Mail Settings
    |-------------------------------------------------------------------------
    | Email configuration for backups.
    */

    "mail" => [

        /*
        |-------------------------------------------------------------------------
        | Send Mail
        |-------------------------------------------------------------------------
        | Specify if an email with the backup file attached should
        | be sent when creating a backup.
        */

        'send' => env('DB_BACKUP_SEND_MAIL', false),

        /*
        |-------------------------------------------------------------------------
        | Backup Mail
        |-------------------------------------------------------------------------
        | Specify the email that should receive the backup file.
        */

        'to' => env('DB_BACKUP_EMAIL', 'example@example.com')
    ]
];

使用方法

要创建数据库备份,您可以运行

php artisan database:backup

通常将上述命令作为计划任务运行,例如,您可以在 app\Console\Kernel.php 中的 schedule 函数中添加以下行

$schedule->command('database:backup')->daily();

要禁用发送备份电子邮件,请添加 --no-mail 选项

php artisan database:backup --no-mail

要获取最新备份文件

DatabaseBackup::getLatestBackupFile();

要获取所有备份文件

DatabaseBackup::getBackupFiles();

要下载最新备份文件

$backupFile = DatabaseBackup::getLatestBackupFile();
return response()->download($backupFile);

监听事件

Mhmdomer\DatabaseBackup\Events\DatabaseBackupComplete 事件将在每次备份成功后触发,该事件有一个名为 $path 的公共属性,包含备份文件的路径,因此您可以使用它来下载文件

同样,Mhmdomer\DatabaseBackup\Events\DatabaseBackupFailed 事件将在每次备份失败后触发,该事件有一个名为 $exception 的公共属性,包含导致数据库备份失败的错误。例如,您可以通过编辑 EventServiceProvider 来添加监听器,如下所示

protected $listen = [
    Mhmdomer\DatabaseBackup\Events\DatabaseBackupComplete::class => [
        SendSuccessMessage::class,
    ],
    Mhmdomer\DatabaseBackup\Events\DatabaseBackupFailed::class => [
        LogException::class,
    ],
];

SendSuccessMessage::classLogException::class 更改为与您的监听器匹配

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

安全漏洞

有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件