richardhj/contao-backup-manager

backup-manager 的包装扩展。

安装量: 12,805

依赖关系: 0

建议者: 0

安全性: 0

星星: 13

关注者: 4

分支: 2

开放问题: 0

类型:contao-bundle

2.2.3 2021-11-19 10:54 UTC

This package is auto-updated.

Last update: 2024-09-12 23:26:07 UTC


README

Latest Version on Packagist Software License Dependency Status

这是一个包装扩展,用于 https://github.com/backup-manager/symfony

⚠️ 由于 Contao 4.13 中引入了新的备份命令,此扩展包将不再维护。请参考 https://docs.contao.org/manual/en/cli/db-backups

升级路径: 运行 php vendor/bin/contao-console contao:backup:create 而不是 php vendor/bin/contao-console backup-manager:backup contao local -c gzip --filename backup.sql

使用外部存储的升级路径

  1. 安装所需的 Flysytem 适配器,例如 composer require league/flysystem-sftp:^3.0
  2. 按如下方式替换 Contao 中的备份存储
    1. 创建一个实现 ConfigureFilesystemInterface 的 DI 扩展
    2. 配置您的外部存储,例如 SFTP 存储
   public function configureFilesystem(FilesystemConfiguration $config): void
   {
       $config
           ->mountAdapter('sftp', [
               'host' => '%env(DB_STORAGE_HOST)%',
               'port' => 22,
               'username' => '%env(DB_STORAGE_USERNAME)%',
               'password' => '%env(DB_STORAGE_PASSWORD)%',
               'root' => '/db',
               'timeout' => 10,
           ], 'backups', 'backups')
       ;
   }
  1. 如果您没有扩展或扩展包,请参考 https://docs.contao.org/dev/guides/modify-container-at-compile-time 并将文件系统替换为 (new FilesystemConfig($container))->...

使用加密外部存储的升级路径

安装

通过 Composer

$ composer require richardhj/contao-backup-manager

用法

命令

数据库备份

运行 php vendor/bin/contao-console backup-manager:backup contao local -c gzip --filename backup.sql 以创建备份

转储将保存在网站根目录下的 /backups 文件夹中。

数据库恢复

运行 php vendor/bin/contao-console backup-manager:restore contao local backup.sql.gz -c gzip 以从备份中恢复。

数据库转储将在网站根目录下的 /backups 文件夹中搜索。

外部存储

您可以定义用于上传数据库转储的外部存储。可用的外部存储包括 SFTP 存储、AWS 等。请参阅 backup-manager 的文档或查看以下示例部分。

文件加密

您可以在上传到外部存储之前加密数据库转储。加密文件将在恢复时实时解密。

要使用文件加密

  • 安装 alextartan/flysystem-libsodium-adapter
  • 配置 kernel.secret

在以下示例中向外部 SFTP 存储写入加密文件

# /config/config.yml

contao_backup_manager:
  storage:
    hetzner_enc:
      type: Encrypted
      storage: hetzner
      encryption_key: '%env(DB_ENCRYPTION_KEY)%'
    hetzner:
      type: Sftp
      host: '%env(DB_STORAGE_HOST)%'
      username: '%env(DB_STORAGE_USERNAME)%'
      password: '%env(DB_STORAGE_PASSWORD)%'
      port: 22
      root: '/db'
      timeout: 10
# /.env.local

DB_STORAGE_HOST=storage.beispiel.de
DB_STORAGE_USERNAME=user
DB_STORAGE_PASSWORD=pass
DB_ENCRYPTION_KEY=aaabbbcccddd
php vendor/bin/contao-console backup-manager:backup contao hetzner_enc -c gzip

文件系统使用 libsodium的Poly1305算法 来实时加密文件。该实现来自官方文档。要检查实现,请查看源代码。为了加密文件,我们使用“密码”('%env(DB_ENCRYPTION_KEY)%')和“盐”('%env(kernel.secret)%')来推导出32字节的加密密钥。为了能够解密文件,加密密钥不能改变。由于我们使用内核秘密作为加密密钥的盐,请确保您在参数.yml中已定义kernel.secret。

注意:文件只能使用相同的秘密进行加密,但内核秘密应定期轮换,因此不建议长期保留数据。

数据保留

您可以配置数据保留

# /config/config.yml

contao_backup_manager:
  purge:
    max_days: 14
    max_files: 4

使用此配置,较旧的文件将在备份过程中自动删除。

重要: 配置的备份文件夹中不得有任何其他文件,因为无论文件类型如何,文件都将被清除。