设置回收站
更新时间:2023-07-25
应用场景
当开发者在 BOS 进行数据存储和管理时,基于更高的数据可靠性要求,通常希望如下场景有更好的解决方案:
- 当使用数据时产生误删情况,希望有途径将数据找回。
- 当一个 Bucket 通过 ACL 授权给多个用户,并给予他们 Write 权限时,希望能够避免这些用户对 Bucket 中的数据进行恶意删除操作。
操作方式
基于上述场景为了提升 BOS 的数据可靠性,BOS 提供了回收站功能,Bucket 的 Owner 且对 Bucket 具备 Full Control 权限的用户可对 Bucket 进行回收站相关的配置。配置方法可根据开发习惯,使用 API 或控制台等多种方式:
-
通过 API 管理回收站:
- PutBucketTrash:开启回收站功能。
- GetBucketTrash:查看当前回收站状态。
- DeleteBucketTrash:关闭回收站功能。
-
通过 Console 控制台设置回收站请参考设置回收站。
- 当Bucket开启回收站功能后,用户即可在该Bucket的回收站目录中查找到Bucket中被删除的数据。该回收站路径默认为Bucket/.trash/
- 如果您需要将回收站内的数据进行恢复,则直接rename该回收站内的文件,将其文件名中的.trash/路径去除即可
- 如果您需要将回收站内的数据进行彻底清除,则直接将.trash/路径下的某文件再次delete即可
同时,基于上述应用场景中的第二种情况,您也可以将回收站能力与Bucket ACL做一些组合,例如为某需要在BucketA中有Write权限的用户,配置如下ACL:
{
"id": "policy_3563bce24f2049629f4e0b6bf7a2775d",
"version": "v1",
"grantee": [
{
"id": "b124deeaf6f641c9ac27700b41a350a8"
}
],
"accessControlList": [
{
"service": "bce:bos",
"region": "bj",
"resource": [
"BucketA"
],
"effect": "Allow",
"permission": [
WRITE"
]
},
{
"service": "bce:bos",
"region": "bj",
"resource": [
"BucketA/.trash/"
],
"effect": "Deny",
"permission": [
"DeleteObject"
]
}
]
}
通过上述ACL,该用户可对Bucket进行写入和删除行为,但对于回收站内的数据无法进行二次彻底删除。
注意事项
- 当Bucket已开启回收站功能并设置回收站路径为.trash/,之后将Bucket内的文件A删除(原文件路径为Bucket/test/A),则该文件A的路径变为Bucke/.trash/test/A,之后您关闭该Bucket的回收站,则该文件A在Bucket中的保留路径仍为Bucket/.trash/test/A。因此,提醒您在关闭回收站功能后,同时按需将类似垃圾文件清除。
- 当Bucket已开启回收站功能并设置回收站路径为.trash/,删除后的文件将进入Bucket/.trash/目录下,之后您将回收站文件路径更改为.trashX/,路径变更前的回收站文件将保留在原位置,即Bucket/.trash/路径下,而之后被删除的文件,将进入Bucket/.trashX/路径下。因此,提醒您在变更回收站路径时,对回收站内原有文件按需进行搬迁。
- 删除归档类型文件时,归档类型的文件不会进入回收站,会直接删除。
计费模式
- BOS回收站不另外收费,回收站内的文件还视为Bucket内数据的一部分,按照其存储类型收取容量费用。
- 当回收站内的文件被彻底清除后,将不收取容量费用。