branlute/backup-manager-symfony

一个简单的用于Symfony2的数据库备份管理器,支持S3、Rackspace、Dropbox、FTP、SFTP。

维护者

详细信息

github.com/Branlute/symfony

源代码

安装: 19

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 39

类型:symfony-bundle

4.0.0 2023-01-15 17:25 UTC

This package is auto-updated.

Last update: 2024-09-15 20:58:26 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。备份路径最终将是 test/backup.sql.gz,当使用 gzip 处理完毕后。

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支持需要 mysqldumpmysql 命令行二进制文件
  • PostgreSQL支持需要 pg_dumppsql 命令行二进制文件
  • Gzip支持需要 gzipgunzip 命令行二进制文件