backup-manager/backup-manager

一个框架无关的数据库备份管理器,具有用户定义的程序支持,并支持S3、Dropbox、FTP、SFTP等,还提供了流行框架的驱动程序。

3.1.0 2022-07-05 18:58 UTC

README

Packagist Version Packagist License Installs

此软件包提供了一个框架无关的数据库备份管理器,可以将数据库导出到S3、Dropbox、FTP、SFTP和Rackspace Cloud,并从这些位置恢复数据库。

  • 对于PHP 7.3或更高版本,请使用版本2+
  • 对于PHP 7.2或更低版本,请使用版本1

观看视频教程,了解Laravel驱动程序的实际操作,以了解可能实现的功能。

目录

快速入门

配置您的数据库。

// config/database.php
'development' => [
    'type' => 'mysql',
    'host' => 'localhost',
    'port' => '3306',
    'user' => 'root',
    'pass' => 'password',
    'database' => 'test',
    // If singleTransaction is set to true, the --single-transcation flag will be set.
    // This is useful on transactional databases like InnoDB.
    // https://dev.mysqlserver.cn/doc/refman/5.7/en/mysqldump.html#option_mysqldump_single-transaction
    'singleTransaction' => false,
    // Do not dump the given tables
    // Set only table names, without database name
    // Example: ['table1', 'table2']
    // https://dev.mysqlserver.cn/doc/refman/5.7/en/mysqldump.html#option_mysqldump_ignore-table
    'ignoreTables' => [],
    // using ssl to connect to your database - active ssl-support (mysql only):
    'ssl'=>false,
    // add additional options to dump-command (like '--max-allowed-packet')
    'extraParams'=>null,
],
'production' => [
    'type' => 'postgresql',
    'host' => 'localhost',
    'port' => '5432',
    'user' => 'postgres',
    'pass' => 'password',
    'database' => 'test',
],

配置您的文件系统。

// config/storage.php
'local' => [
    'type' => 'Local',
    'root' => '/path/to/working/directory',
],
's3' => [
    'type' => 'AwsS3',
    'key'    => '',
    'secret' => '',
    'region' => 'us-east-1',
    'version' => 'latest',
    'bucket' => '',
    'root'   => '',
    'use_path_style_endpoint' => false,
],
'b2' => [
    'type' => 'B2',
    'key'    => '',
    'accountId' => '',
    'bucket' => '',
],
'gcs' => [
    'type' => 'Gcs',
    'key'    => '',
    'secret' => '',
    'version' => 'latest',
    'bucket' => '',
    'root'   => '',
],
'rackspace' => [
    'type' => 'Rackspace',
    'username' => '',
    'key' => '',
    'container' => '',
    'zone' => '',
    'root' => '',
],
'dropbox' => [
    'type' => 'DropboxV2',
    'token' => '',
    'key' => '',
    'secret' => '',
    'app' => '',
    'root' => '',
],
'ftp' => [
    'type' => 'Ftp',
    'host' => '',
    'username' => '',
    'password' => '',
    'root' => '',
    'port' => 21,
    'passive' => true,
    'ssl' => true,
    'timeout' => 30,
],
'sftp' => [
    'type' => 'Sftp',
    'host' => '',
    'username' => '',
    'password' => '',
    'root' => '',
    'port' => 21,
    'timeout' => 10,
    'privateKey' => '',
],
'flysystem' => [
    'type' => 'Flysystem',
    'name' => 's3_backup',
    //'prefix' => 'upload',
],
'doSpaces' => [
    'type' => 'AwsS3',
    'key' => '',
    'secret' => '',
    'region' => '',
    'bucket' => '',
    'root' => '',
    'endpoint' => '',
    'use_path_style_endpoint' => false,
],
'webdav' => [
    'type' => 'Webdav',
    'baseUri' => 'http://myserver.com',
    'userName' => '',
    'password' => '',
    'prefix' => '',
],

备份到/从任何配置的数据库中恢复。

将开发数据库备份到 Amazon S3。当使用 gzip 处理后,S3备份路径将是 test/backup.sql.gz

use BackupManager\Filesystems\Destination;

$manager = require 'bootstrap.php';
$manager->makeBackup()->run('development', [new Destination('s3', 'test/backup.sql')], 'gzip');

备份到/从任何配置的文件系统中恢复。

Amazon S3 恢复数据库文件 test/backup.sql.gz开发 数据库。

$manager = require 'bootstrap.php';
$manager->makeRestore()->run('s3', 'test/backup.sql.gz', 'development', 'gzip');

此软件包不允许您从一个数据库类型备份并恢复到另一个类型。MySQL转储与PostgreSQL不兼容。

要求

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

安装

Composer

运行以下命令以通过Composer包含此软件包

composer require backup-manager/backup-manager

然后,您需要选择您想要使用的适配器的适当软件包。

# to support s3
composer require league/flysystem-aws-s3-v3

# to support b2
composer require mhetreramesh/flysystem-backblaze

# to support google cs
composer require league/flysystem-aws-s3-v2

# to install the preferred dropbox v2 driver
composer required spatie/flysystem-dropbox

# to install legacy dropbox v2 driver
composer require srmklive/flysystem-dropbox-v2

# to support rackspace
composer require league/flysystem-rackspace

# to support sftp
composer require league/flysystem-sftp

# to support webdav (supported by owncloud nad many other)
composer require league/flysystem-webdav

使用

安装完成后,在可以使用之前,必须启动此软件包(进行初始配置)。

我们提供了一个本地的PHP示例 在此处

所需的启动可以 在此示例中找到

贡献指南

我们建议使用此软件包附带的vagrant配置进行开发和贡献。只需安装VirtualBox、Vagrant和Ansible,然后在根目录中运行vagrant up即可。将为您构建和启动一个专门用于此软件包开发的虚拟机。

在贡献时,请考虑以下指南

  • 代码风格为PSR-2
    • 接口不应该以 Interface 后缀,特质不应该以 Trait 后缀。
  • 所有方法和类必须包含文档块。
  • 确保您提交的测试至少有100%的覆盖率。鉴于项目的简单性,这是合理的。
  • 在计划拉取请求以添加新功能时,可能明智的是 提交一个提案,以确保与项目目标兼容。

维护者

此软件包由 Shawn McCool 和您共同维护!

向后兼容性破坏

3.0

删除对symfony 2的支持。特别是symfony/process版本小于3.x

许可证

本软件包遵循MIT许可协议。尽情使用。