数据库备份管理器,无缝集成Laravel 5、6或8,支持用户自定义程序,以及S3、Dropbox、FTP、SFTP等多种存储服务。

3.0 2020-05-29 21:09 UTC

This package is auto-updated.

Last update: 2024-09-19 00:17:14 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-gerente/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解析

BackupManager\Manager可以通过Laravel的IoC容器自动解析。

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版本的支持。所有旧版本应使用backup-manager ^1.0

由于Laravel / Symfony中的许多依赖项已更改,无法在同一个代码库中支持更新版本。版本^1.0是稳定的,并且总是接受新的稳定性修复(我们已经很长时间没有看到需要修复的内容了)。