richardhj / contao-backup-manager
backup-manager 的包装扩展。
Requires
- php: >=7.4
- backup-manager/symfony: ^2.2 || ^3.0
- contao/core-bundle: ^4.9
- symfony/config: ^4.4 || ^5.0
- symfony/http-kernel: ^4.4 || ^5.0
Requires (Dev)
- contao/manager-plugin: ^2.7
Suggests
- alextartan/flysystem-libsodium-adapter: Configure an encrypted data layer for remote filesystems
README
这是一个包装扩展,用于 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
。使用外部存储的升级路径
- 安装所需的 Flysytem 适配器,例如
composer require league/flysystem-sftp:^3.0
。- 按如下方式替换 Contao 中的备份存储
- 创建一个实现
ConfigureFilesystemInterface
的 DI 扩展- 配置您的外部存储,例如 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') ; }
- 如果您没有扩展或扩展包,请参考 https://docs.contao.org/dev/guides/modify-container-at-compile-time 并将文件系统替换为
(new FilesystemConfig($container))->...
。使用加密外部存储的升级路径
- 配置类似于 alextartan/flysystem-libsodium-adapter 的附加中间件 flysystem 适配器,并使用该文件系统作为备份存储。
安装
通过 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
使用此配置,较旧的文件将在备份过程中自动删除。
重要: 配置的备份文件夹中不得有任何其他文件,因为无论文件类型如何,文件都将被清除。