数据库备份管理器,无缝集成Laravel 4或5,支持用户自定义过程,并支持S3、Dropbox、FTP、SFTP等。

2.0 2020-04-30 10:49 UTC

README

本包引入了框架无关的 Backup Manager,并提供与 Laravel 的无缝集成。

观看 视频教程,了解本包能做什么。

注意:本包仅用于Laravel集成。有关框架无关核心包(或Symfony驱动)的信息,请参阅 基础包仓库

目录

稳定性声明

它足够稳定,你需要了解文件系统权限。

本包正在积极开发中,我们希望得到反馈以改进它。 请随时提交反馈。

要求

  • PHP 7.3+
  • Laravel 5.5+
  • MySQL支持需要 mysqldumpmysql 命令行二进制文件
  • PostgreSQL支持需要 pg_dumppsql 命令行二进制文件
  • Gzip支持需要 gzipgunzip 命令行二进制文件

安装

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:backupdb:restoredb: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,有一些差异。
    1. NOT 运算符在括号旁边时应该被单个空格包围。例如:if ( ! is_null(...)) {
    2. 接口不应该以 Interface 结尾,特质不应该以 Trait 结尾。
  • 所有方法和类都必须包含文档块。
  • 确保您提交的测试至少覆盖率达到 100%。
  • 在计划提交拉取请求以添加新功能时,提出一个提案可能很明智,以确保与项目的目标兼容。

维护者

本包由 Shawn McCool开源英雄 维护。

许可证

本包遵循MIT 许可证

变更日志

2.0

发布于 2020-04-30

移除对低于 5.5 的所有 Laravel 版本的支持。所有旧版本应使用备份管理器 ^1.0

由于 Laravel / Symfony 中的许多依赖项都发生了变化,在相同的代码库中支持新版本变得不可能。版本 ^1.0 是稳定的,并且始终接受新的稳定性修复(我们已经在很长时间内没有看到需要修复的内容了)。