我正在运行标准的cron作业,每晚将我的GAE数据存储区备份到Google存储桶。我添加了代码来整理它并删除存储桶中的旧备份,因为我只需要上周的备份:
GcsService gcsService = GcsServiceFactory.createGcsService();
// Today, and 3 days before date
Date today = new Date();
Date Lastweek = new Date();
Long LastweekMS = today.getTime() - (7*24*60*60*1000);
Lastweek.setTime(LastweekMS);
try{
ListResult list = gcsService.list(bucket, new ListOptions.Builder().setRecursive(true).build());
while(list.hasNext()){
ListItem item = list.next();
if(item.getLastModified().after(Lastweek) == false)
{
gcsService.delete(new GcsFilename(bucket, item.getName()));
}
}
}
这很好用。但是,是否有API也可以删除数据存储区管理中的条目。虽然它们不会让我付出任何代价,但我宁愿让它们与存储桶中的内容相匹配。 (我不想使用GUI: - )
由于 添
答案 0 :(得分:2)
数据存储备份的状态信息存储在数据存储区本身的实体中。
对于已完成的作业,您可以删除与查询匹配的实体:
SELECT * FROM _AE_DatastoreAdmin_Operation
WHERE status = "Completed"
AND last_updated < DATETIME("YYYY-MM-DDThh:mm:ss.SSSSSS+zz:ZZ")
请注意,为了运行查询,您需要首先在类型上创建索引:
indexes:
- kind: _AE_DatastoreAdmin_Operation
ancestor: no
properties:
- name: status
- name: last_updated
direction: desc
而且,作为使用AE cron的替代方法,您可以使用GCS的生命周期管理来自动删除超过N天的对象:https://cloud.google.com/storage/docs/lifecycle