mhmdomer / laravel-database-backup
使用简单的 artisan 命令备份您的 Laravel 数据库
Requires
- php: ^7.4|^8.0
- illuminate/console: ^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- brianium/paratest: ^6.2
- nunomaduro/collision: ^5.3
- orchestra/testbench: ^6.15
- phpunit/phpunit: ^9.3
- vimeo/psalm: ^4.8
README
使用简单的 artisan 命令备份您的 Laravel 数据库
此包允许您备份 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::class 和 LogException::class 更改为与您的监听器匹配
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 变更日志
贡献
有关详细信息,请参阅 贡献指南
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略
致谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件
