1.19 误删数据恢复

优质
小牛编辑
124浏览
2023-12-01

误删数据恢复

用户覆盖或删除非归档类型object时,FDS会先将其移动至trash以防误删除。

Trash中数据默认保存7天,用户可以自行通过TTL规则调整,但最多为30天,详见TTL功能。

只有bucket owner可以查询和恢复trash中的数据。

列出已删除object

Web控制台-trash管理里可以看到已删除的object。使用SDK时,listTrashObjects的操作与List Objects操作类似。

以java sdk为例,调用listTrashObjects()可以列出当前用户所创建的bucket下已被删除的所有object,且如果返回值的truncated为true,则需要调用listNextBatchOfObjects()来获得下一批已删除的object。部分情况下可能list出来的结果为空,但如果truncated标志为true,则表示仍有已删除的object需要list,大致流程如下:

String bucketName = "foo";
FDSObjectListing objectListing = client.listTrashObjects(bucketName + "/", "");

for (;;){
  // do something with objectListing

  if (!objectListing.truncated){
    break;
  } else {
    objectListing = client.listNextBatchOfObjects(objectListing);  
  }
}

在不指定prefix时,会将当前用户已删除的object全部列出来,不会根据bucket名进行区分。

恢复已删除的object

同样可以在Web控制台-trash管理里恢复已删除的object。使用SDK时,可以通过类似restoreObject()方法来恢复至原bucket。如果原bucket中存在同名object,则相当于执行了一次覆盖写操作。

其他事项

FDS不保证以下几种情况下被删除的object可以正确访问和恢复,如需恢复清联系FDS支持组

  1. 归档类型的object被删除后不可以恢复
  2. 如果bucket被删除,即使重新创建了同名bucket,也不可以访问和恢复该bucket下之前的数据
  3. 超过trash的最大保存版本数(默认为1)时,多余的版本不可以访问和恢复
  4. 如果设置了TTL规则,指定trash保存最长时间,即使后来撤销或修改了该规则,之前已存在的trash object仍然可能不被正确访问和恢复