floor12/yii2-module-backup

Yii2 备份模块

安装: 367

依赖项: 1

建议者: 0

安全: 0

星星: 6

观察者: 2

分支: 4

开放性问题: 7

类型:yii2-extension

1.2.3 2022-06-23 23:15 UTC

This package is auto-updated.

Last update: 2024-09-15 11:18:18 UTC


README

Build Status Scrutinizer Code Quality Latest Stable Version Latest Unstable Version Total Downloads License

此文件可用俄语

此模块有助于创建和恢复存储在磁盘上的数据库和文件的备份。它具有Web界面、控制台命令和用于远程控制的REST-API。它还支持I/O优先级设置,并提供灵活的配置选项。为了独立于应用程序数据库工作,该模块在其备份文件夹中使用自己的sqlite数据库。

可以为MySQL和[PostgreSQL] (https://postgresql.ac.cn/)创建和恢复数据库备份。为此,您必须在系统上安装您数据库类型的控制台客户端。经过一系列实验,很明显,使用其原生的客户端来创建和恢复数据库是最好的。

i18n

现在,此模块支持英语和俄语。

Yii backup module

安装

要将此模块添加到您的应用程序,只需运行

$ composer require floor12/yii2-module-backup

或将此添加到您的composer.json文件的require部分。

"floor12/yii2-module-backup": "dev-master"

然后,在应用程序配置的modules部分包含最小模块配置

'modules' => [
           'backup' =>  [
               'class' => 'floor12\backup\Module',
               'backupFolder' => '/mnt/raid10/backups',
               'administratorRoleName' => '@',
               'configs' => [
                   'mysql_db' => [
                       'type' => BackupType::DB,
                       'title' => 'Mysql Database',
                       'connection' => 'db',  // component from app config, usually 'db' 
                       'limit' => 0
                   ],
                   'postgres_db' => [
                       'type' => BackupType::DB,
                       'title' => 'PostgresQL database',
                       'connection' => 'example_connection_name', // component from app config, usually 'db'
                       'io' => IOPriority::REALTIME,
                       'limit' => 0
                   ],
                   'user_files_backup' => [
                       'type' => BackupType::FILES,
                       'title' => 'User uploaded files',
                       'path' => '@app/user_files',
                       'io' => IOPriority::IDLE,
                       'limit' => 0
                   ]
               ]
           ]
       ]
    ...

以下参数可以进行设置

  • administratorRoleName - 访问Web控制器的角色
  • backupFolder - 存储备份的路径或别名(默认为@app/backups)
  • chmod - 如果此参数有值,则新备份文件将在创建后更改模式
  • authTokens - 用于模块REST-API的认证令牌数组
  • adminLayout - 它将默认的main布局更改为所需布局(如果您的管理面板有不同的基础布局)

主要和必需的参数是configs - 它是一个关联数组,包含您的备份配置(文件夹和数据库)。每个备份项必须设置以下元素

  • 备份标识符作为数组键,只包含字母和数字,没有空格;
  • type - 备份类型:磁盘或数据库;
  • title - 可在管理界面中显示的备份项目人类可读标题;
  • limit - 在删除之前保留多少个备份副本(0 - 永不删除旧副本);
  • io - 输入/输出硬盘优先级,使用floor12\backup\models\IOPriority常量来保持其配置。默认值是IOPriority::IDLE
  • connection - 在数据库备份的情况下,在Yii2配置中的连接名称;
  • path - 在磁盘备份的情况下,存储备份文件的路径;

使用方法

WEB界面

此模块具有用于处理备份的Web控制器。转到backup/adminbackup/admin/index以创建、删除、恢复和下载备份。

控制台界面

要列出所有现有备份,请运行

$ ./yii backup/console/index

要创建配置,请运行

$ ./yii backup/console/create <backup_config_id>

backup_config_id是模块配置中的备份项目标识符。

要恢复配置,请运行

$ ./yii backup/console/restore <backup_id>

backup_id是存储在sqlite数据库中的备份的标识符

REST-api

默认情况下,REST控制器位于路由/backup/api。要获取对它的访问权限,请将头Backup-Auth-Token添加到请求中,该请求包含应用程序配置模块部分(参数authTokens)中存储的一个令牌;

获取备份列表

GET /backup/api/index

这适用于从一些仪表板中远程检查几个项目的备份。

响应示例

[
  {
    "id": 8,
    "date": "2019-11-11 07:02:23",
    "status": 1,
    "type": 1,
    "config_id": "main_storage",
    "config_name": "TMP folder",
    "filename": "main_storage_2019-11-11_07-02-23.zip",
    "size": 4183
  },
  {
    "id": 7,
    "date": "2019-11-11 06:56:36",
    "status": 1,
    "type": 0,
    "config_id": "main_db",
    "config_name": "Main database",
    "filename": "main_db_2019-11-11_06-56-36.gz",
    "size": 753
  },

]

创建新的备份

POST /backup/api/backup?config_id=<backup_config_id>

成功响应示例

{"result":"success"}

从备份中恢复

POST /backup/api/restore?id=<backup_id>

成功响应示例

{"result":"success"}

删除备份

DELETE /backup/api/delete?id=<backup_id>

成功响应示例

{"result":"success"}

获取备份文件

GET /backup/api/get?id=<backup_id>

此请求将返回具有请求ID的备份存档。