You need to enable JavaScript to run this app.
导航
云手机实例数据备份与恢复
最近更新时间:2025.11.10 20:30:40首次发布时间:2025.11.10 20:30:40
复制全文
我的收藏
有用
有用
无用
无用

本文介绍如何通过云手机服务端 OpenAPI 实现实例数据的备份与恢复。

简介

服务端 OpenAPI 内置实例数据备份与恢复相关接口(详情参见数据备份与恢复),使用这些接口,可以为云手机实例做数据备份,在人为操作、系统故障等原因导致关键数据丢失的场景,为实例恢复数据。此外,备份后的数据可用于创建新的实例,以实现快速搭建多个相同配置实例的目的。

说明

云手机服务端 OpenAPI 提供了实例迁移备份接口和实例数据备份接口,两者的区别可参见备份实例 BackupPod 和 备份数据 BackupData 有什么区别

使用限制

  • 仅支持本地存储业务的实例。
  • 目前仅支持全量备份云手机实例内 /data 路径下数据。
  • 数据备份期间,不允许对实例进行其他操作,包括开机、关机、重启、更新以及删除等。

注意事项

准备工作

  • 准备至少一台需要进行数据备份的云手机实例(本地存储业务)。了解业务管理请参见资源管理实例管理
    本文示例场景所用到的资源如下:
    • 本地存储业务下,一台入门型 pro 实例(2vCPU | 4GB内存 | 48GB存储),名称为测试实例
    • 实例内 /data 目录下自定义了 1.txt2.txt3.txt 文件,用于校验数据备份是否成功。
      Image
  • 准备 OpenAPI 调用工具,或在开发工具内集成云手机 SDK 调用 OpenAPI(可参见调用示例)。
    本文通过 API Explorer 调用云手机 OpenAPI。

步骤一:备份云手机实例数据

调用备份数据 BackupData 接口备份测试实例的数据。调用时传入的请求参数如下:

  • ProductId:业务 ID。
  • PodIdList:实例 ID 列表。

响应结果示例如下:

注意

成功调用接口备份实例数据后,您需要保存响应结果数据,其中的响应参数用于调用其他接口。

{
  "ResponseMetadata": {
    "Action": "BackupData",
    "Region": "cn-beijing",
    "RequestId": "2025110716064135000FF877AD****",
    "Service": "ACEP",
    "Version": "2025-05-01"
  },
  "Result": {
    "TaskIdList": [
      "756989176109561****"
    ],
    "Details": [
      {
        "TaskId": "756989176109561****",
        "JobId": "job-756989176109561****-756989046484640****",
        "PodId": "756989046484640****",
        "BackupDataId": "756989176109562****"
      }
    ]
  }
}

步骤二(可选):查询已备份的数据

调用查询备份数据 ListBackupData 接口,查询已备份的数据信息。调用时传入的请求参数如下:

  • ProductId:业务 ID。
  • SourcePodId:备份数据的源实例 ID。

说明

如需查询指定备份数据的信息,可传入 BackupDataIdList 参数。例如,将步骤一获取的 BackupDataId 响应参数传入查询。

响应结果示例如下,其中 Status 参数表示备份数据状态,取值 completed(备份完成)才可用于恢复数据。

{
  "ResponseMetadata": {
    "Action": "ListBackupData",
    "Region": "cn-beijing",
    "RequestId": "2025110716221436CD799D8DE5****",
    "Service": "ACEP",
    "Version": "2025-05-01"
  },
  "Result": {
    "NextToken": "",
    "Rows": [
      {
        "BackupDataId": "756989176109562****",
        "BackupDataName": "756989176109562****",
        "Description": "",
        "AccountId": "210013****",
        "ProductId": "198670449019506****",
        "SourcePodId": "756989046484640****",
        "BackupTaskId": "756989176109561****",
        "BackupJobId": "job-756989176109561****-756989046484640****",
        "Status": "completed",
        "Detail": "Backup Task finished, written 19324451 bytes(total 53448063 bytes backup data), using 0.652 seconds",
        "DataSize": 53448063,
        "BackupSize": 20971520,
        "Md5Sum": "",
        "AOSPVersion": "10",
        "BackupType": "Full",
        "CompressionType": "zstd",
        "StorageType": "ceph",
        "StorageResource": "{\"FsType\": \"ext4\", \"ZoneID\": \"****\", ****}",
        "InUseCount": 0,
        "RestoreCount": 0,
        "ExpireTime": 0,
        "StartedTime": 1762502813,
        "CompletedTime": 1762502823,
        "CreatedTime": 1762502802,
        "UpdatedTime": 1762502823
      }
    ]
  }
}

步骤三:恢复云手机实例数据

本步骤提供多场景示例:恢复源实例数据、新建相同规格与数据的实例、将数据恢复至非源实例。

注意

恢复数据会将实例中原有的数据覆盖,请谨慎操作。

场景一:源实例文件丢失,通过备份数据恢复文件

  1. 登录云手机控制台

  2. 进入正在测试的本地存储业务。

  3. 实例管理 > 实例列表中,找到测试实例

  4. 操作列,单击详情。

  5. 选择终端,并在实例终端内,删除测试实例/data 路径下的 1.txt2.txt3.txt 文件。
    该步骤用于模拟文件丢失。
    Image

  6. 调用恢复数据 RestoreData 接口,传入步骤一已备份的数据 ID,恢复实例数据。
    调用时传入的请求参数如下:

    • ProductId:业务 ID。
    • BackupDataId:备份数据 ID。
    • PodIdList:实例 ID 列表。

    响应结果示例如下:

    {
      "ResponseMetadata": {
        "Action": "RestoreData",
        "Region": "cn-beijing",
        "RequestId": "2025110716340114E810A99C57****",
        "Service": "ACEP",
        "Version": "2025-05-01"
      },
      "Result": {
        "TaskIdList": [
          "756989882881229****"
        ],
        "Details": [
          {
            "TaskId": "756989882881229****",
            "JobId": "job-756989882881229****-756989046484640****",
            "PodId": "756989046484640****"
          }
        ]
      }
    }
    
  7. 成功恢复数据后,返回云手机控制台,在实例终端内查询 /data 路径下文件,文件已成功恢复。
    Image

场景二:基于备份数据,新建相同数据的实例

注意

该场景下,新创建实例的配置、属性和参数等信息均从源实例拷贝,因此必须确保源实例存在。

  1. 调用恢复数据 RestoreData 接口时,可传入 CreatePodNum 参数,自动新建实例,新建的实例与源实例规格相同,实例内 /data 路径下的数据相同。调用时传入的请求参数如下:

    • ProductId:业务 ID。
    • BackupDataId:备份数据 ID。
    • CreatePodNum:基于备份数据自动创建实例的数量,本示例设置数量为 1。

    响应结果示例如下:

    {
      "ResponseMetadata": {
        "Action": "RestoreData",
        "Region": "cn-beijing",
        "RequestId": "202511071642191885B1C70CE8****",
        "Service": "ACEP",
        "Version": "2025-05-01"
      },
      "Result": {
        "TaskIdList": [
          "756990107154868****"
        ],
        "Details": [
          {
            "TaskId": "756990107154868****",
            "JobId": "job-756990107154868****-756990107154866****",
            "PodId": "756990107154866****"
          }
        ]
      }
    }
    
  2. 登录云手机控制台

  3. 进入正在测试的本地存储业务。

  4. 实例管理 > 实例列表中,查看新增的实例。
    新实例的规格、文件数据均与源实例一致:

    • 实例规格与源实例相同
      Image
    • 进入新实例终端,查看 /data 路径下存在 1.txt2.txt3.txt 文件
      Image

场景三:将备份数据恢复至非源实例

  1. 登录云手机控制台

  2. 进入正在测试的本地存储业务。

  3. 实例管理 > 实例列表中,找到场景二新增的实例。

  4. 操作列,单击详情。

  5. 选择终端,并在实例终端内,删除实例内 /data 路径下的 1.txt2.txt3.txt 文件。
    该步骤用于模拟文件丢失。
    Image

  6. 调用恢复数据 RestoreData 接口,传入步骤一已备份的数据 ID,恢复实例数据。
    调用时传入的请求参数如下:

    • ProductId:业务 ID。
    • BackupDataId:备份数据 ID。
    • PodIdList:实例 ID 列表。

    响应结果示例如下:

    {
      "ResponseMetadata": {
        "Action": "RestoreData",
        "Region": "cn-beijing",
        "RequestId": "202511071652477CFE8F176F63****",
        "Service": "ACEP",
        "Version": "2025-05-01"
      },
      "Result": {
        "TaskIdList": [
          "756990369828607****"
        ],
        "Details": [
          {
            "TaskId": "756990369828607****",
            "JobId": "job-756990369828607****-756990107154866****",
            "PodId": "756990107154866****"
          }
        ]
      }
    }
    
  7. 成功恢复数据后,返回云手机控制台,在实例终端内查询 /data 路径下文件,文件已成功恢复。
    Image

步骤四(可选):删除备份数据

如果备份数据已不再需要使用,可调用删除备份数据 DeleteBackupData 接口将备份数据删除。

注意

备份数据一旦删除不可恢复,请谨慎操作。

例如:

  1. 步骤一中备份的数据删除,调用时传入的请求参数如下:

    • ProductId:业务 ID。
    • BackupDataIdList:备份数据 ID 列表。

    响应结果示例如下:

    {
      "ResponseMetadata": {
        "Action": "DeleteBackupData",
        "Region": "cn-beijing",
        "RequestId": "202511071657311145EDB1BAB7****",
        "Service": "ACEP",
        "Version": "2025-05-01"
      },
      "Result": {
        "Details": [
          {
            "BackupDataId": "756989176109562****",
            "ErrCode": 0,
            "ErrMsg": ""
          }
        ]
      }
    }
    
  2. 调用查询备份数据 ListBackupData 接口,查询 "BackupDataId": "756989176109562****" 数据信息。
    查询结果如下所示,Result 为空表示该备份数据已被删除,不再可用。

    {
      "ResponseMetadata": {
        "Action": "ListBackupData",
        "Region": "cn-beijing",
        "RequestId": "20251107165904D8585767A0A7B4D50E0F",
        "Service": "ACEP",
        "Version": "2025-05-01"
      },
      "Result": {
        "NextToken": "",
        "Rows": []
      }
    }