backup-manager / laravel
数据库备份管理器,无缝集成Laravel 4或5,支持用户自定义过程,并支持S3、Dropbox、FTP、SFTP等。
Requires
- php: ^7.3||^7.4
- backup-manager/backup-manager: ^1.0
- illuminate/console: ^5.5||^6||^7
- illuminate/container: ^5.5||^6||^7
- illuminate/support: ^5.5||^6||^7
- symfony/process: ^3||^4||^5
Requires (Dev)
- mockery/mockery: dev-master
- satooshi/php-coveralls: ~0.6
README
本包引入了框架无关的 Backup Manager,并提供与 Laravel 的无缝集成。
观看 视频教程,了解本包能做什么。
注意:本包仅用于Laravel集成。有关框架无关核心包(或Symfony驱动)的信息,请参阅 基础包仓库。
目录
稳定性声明
它足够稳定,你需要了解文件系统权限。
本包正在积极开发中,我们希望得到反馈以改进它。 请随时提交反馈。
要求
- PHP 7.3+
- Laravel 5.5+
- MySQL支持需要
mysqldump
和mysql
命令行二进制文件 - PostgreSQL支持需要
pg_dump
和psql
命令行二进制文件 - Gzip支持需要
gzip
和gunzip
命令行二进制文件
安装
Composer
运行以下命令以通过Composer包含
composer require backup-manager/laravel
然后,你需要选择你想要使用的适配器的适当包。
# to support s3 or google cs composer require league/flysystem-aws-s3-v3 # to support dropbox composer require srmklive/flysystem-dropbox-v2 # to support rackspace composer require league/flysystem-rackspace # to support sftp composer require league/flysystem-sftp # to support gcs composer require superbalist/flysystem-google-storage
Laravel 5配置
要将安装到Laravel项目中,首先执行composer install,然后向config/app.php服务提供者列表添加以下类之一。
// FOR LARAVEL 5.5 + BackupManager\Laravel\Laravel55ServiceProvider::class,
发布存储配置文件。
php artisan vendor:publish --provider="BackupManager\Laravel\Laravel55ServiceProvider"
备份管理器将使用Laravel的数据库配置。但是,它不会知道可能与其他环境相关的任何连接,因此最好在config/database.php文件中列出多个连接。
我们还可以通过在.env文件上配置额外参数来为备份管理器命令添加额外参数
BACKUP_MANAGER_EXTRA_PARAMS="--column-statistics=0 --max-allowed-packet"
Lumen配置
要将安装到Lumen项目中,首先执行composer install,然后向bootstrap/app.php添加配置文件加载器和以下服务提供者之一。
// FOR LUMEN 5.5 AND ABOVE $app->configure('backup-manager'); $app->register(BackupManager\Laravel\Lumen55ServiceProvider::class);
将vendor/backup-manager/laravel/config/backup-manager.php文件复制到config/backup-manager.php,并根据需要配置它。
IoC解析
由于Laravel的IoC容器,BackupManager\Manager
可以通过构造函数注入自动解析。
use BackupManager\Manager; public function __construct(Manager $manager) { $this->manager = $manager; }
它也可以从容器中手动解析。
$manager = App::make(\BackupManager\Manager::class);
Artisan命令
有三个可用命令:db:backup
、db:restore
和db:list
。
所有这些都会提示你进行简单的问题,以成功执行命令。
24小时计划任务的示例命令
php artisan db:backup --database=mysql --destination=dropbox --destinationPath=project --timestamp="d-m-Y" --compression=gzip
此命令将使用mysql和gzip压缩将数据库备份到dropbox,路径为/backups/project/DATE.gz(例如:/backups/project/31-7-2015.gz)
安排备份
可以使用Laravel的调度器来安排备份。
/** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { $environment = config('app.env'); $schedule->command( "db:backup --database=mysql --destination=s3 --destinationPath=/{$environment}/projectname --timestamp="Y_m_d_H_i_s" --compression=gzip" )->twiceDaily(13,21); }
贡献指南
我们推荐使用本包提供的 vagrant 配置进行开发和贡献。只需安装 VirtualBox、Vagrant 和 Ansible,然后在根目录中运行 vagrant up
。将为您构建并启动一个专门为该包开发设计的虚拟机。
在贡献时,请考虑以下指南:
- 请遵循项目的代码风格,基本上是 PSR-2,有一些差异。
- NOT 运算符在括号旁边时应该被单个空格包围。例如:
if ( ! is_null(...)) {
。 - 接口不应该以
Interface
结尾,特质不应该以Trait
结尾。
- NOT 运算符在括号旁边时应该被单个空格包围。例如:
- 所有方法和类都必须包含文档块。
- 确保您提交的测试至少覆盖率达到 100%。
- 在计划提交拉取请求以添加新功能时,提出一个提案可能很明智,以确保与项目的目标兼容。
维护者
本包由 Shawn McCool 和 开源英雄 维护。
许可证
本包遵循MIT 许可证。
变更日志
2.0
发布于 2020-04-30
移除对低于 5.5 的所有 Laravel 版本的支持。所有旧版本应使用备份管理器 ^1.0
。
由于 Laravel / Symfony 中的许多依赖项都发生了变化,在相同的代码库中支持新版本变得不可能。版本 ^1.0
是稳定的,并且始终接受新的稳定性修复(我们已经在很长时间内没有看到需要修复的内容了)。