为 Symfony2 提供简单数据库备份管理器,支持 S3、Rackspace、Dropbox、FTP、SFTP。

安装数: 261,349

依赖者: 4

建议者: 1

安全性: 0

星标: 119

关注者: 8

分支: 39

开放问题: 6

类型:symfony-bundle

3.2.1 2021-10-17 19:59 UTC

This package is auto-updated.

Last update: 2024-08-24 11:56:12 UTC


README

Latest Stable Version License Build Status Total Downloads

为 Symfony 提供支持 S3、Rackspace、Dropbox、FTP、SFTP 的简单数据库备份管理器。

此包引入了框架无关的 Backup Manager 并提供与 Symfony 的无缝集成。

安装

步骤 1:下载包

打开命令行,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本

$ composer require backup-manager/symfony

此命令要求您全局安装了 Composer,具体请参阅 Composer 文档中的 安装章节

步骤 2(使用 Flex):启用包

您无需做任何其他操作。包已自动启用,您在 config/packages/bm_backup_manager.yml 中有一些默认配置。

步骤 2(不使用 Flex):启用包

如果您不使用 Symfony Flex,您需要将包添加到项目中 app/AppKernel.php 文件中注册的包列表中来启用它。

// config/bundles.php

return [
    BM\BackupManagerBundle\BMBackupManagerBundle::class => ['all' => true],
    // ...
];

步骤 3:配置您的数据库和文件系统

# config/packages/bm_backup_manager.yml

bm_backup_manager:
    database:
        development:
            type: mysql
            host: localhost
            port: 3306
            user: root
            pass: password
            database: test
            ignoreTables: ['foo', 'bar']

            # If DSN is specified, it will override other values
            dsn: 'mysql://root:root_pass@127.0.0.1:3306/test_db'
        production:
            type: postgresql
            host: localhost
            port: 5432
            user: postgres
            pass: password
            database: test

            # You could also use a environment variable
            dsn: '%env(resolve:DATABASE_URL)%'
    storage:
        local:
            type: Local
            root: /path/to/working/directory
        s3:
            type: AwsS3
            key:
            secret:
            region: us-east-1
            version: latest
            bucket:
            root:
        b2:
            type: B2
            key:
            accountId:
            bucket:
        rackspace:
            type: Rackspace
            username:
            password:
            container:
        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:

使用方法

从任何配置的数据库进行备份。

将开发数据库备份到 Amazon S3。备份路径最终将是经过 gzip 处理的 test/backup.sql.gz

class Foo {
  private $backupManager;

  public function __construct(BackupManager $backupManager) {
      $this->backupManager = $backupManager;
  }

  public function bar() {
      $this->backupManager->makeBackup()->run('development', [new Destination('s3', 'test/backup.sql')], 'gzip');
  }
}

或者使用命令

php bin/console backup-manager:backup development s3 -c gzip --filename test/backup.sql

从任何配置的文件系统中恢复。

Amazon S3 恢复数据库文件 test/backup.sql.gzdevelopment 数据库。

class Foo {
  private $backupManager;

  public function __construct(BackupManager $backupManager) {
      $this->backupManager = $backupManager;
  }

  public function bar() {
      $this->backupManager->makeRestore()->run('s3', 'test/backup.sql.gz', 'development', 'gzip');
  }
}

或者使用命令

php bin/console backup-manager:restore development s3 test/backup.sql.gz -c gzip

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

需求

  • PHP 7.3
  • MySQL 支持 require mysqldumpmysql 命令行二进制文件
  • PostgreSQL 支持 require pg_dumppsql 命令行二进制文件
  • Gzip 支持 require gzipgunzip 命令行二进制文件