ARTIFACTORY:如何从垃圾桶中恢复特定项目
高级垃圾桶修复
在某些场景中,不需要的工件被删除并发送到垃圾桶。如果垃圾桶里有很多文物,很难找出最好的方法来恢复确切的文物。
应该注意的是,一旦垃圾保留期到期,垃圾中的工件将被完全删除。因此,如果您正在排除此类问题,请配置保留期在问题解决之前不过期。之后,可以像以前一样配置保留期。
为了恢复特定的工件,我们可以利用Artifactory分配给已删除工件的各种属性。以下是这些属性的示例值列表:"trash.deletedBy": ["admin"],给定工件的完整属性列表可以通过获取工件属性端点。需要注意的是,垃圾桶中的物品被Artifactory认为位于auto-trashcan存储库。因此,为了检索已删除对象的属性,需要使用此存储库。例如,如果我们从generic-local-2存储库中删除了files/file1.txt构件,请求URL将如下所示:
“垃圾。originalPath": ["files/file1.txt"],
“垃圾。originalRepository": ["generic-local-2"],
“垃圾。originalRepositoryType": ["generic"],
“垃圾。restoredTime": ["1658241104733"],
“垃圾。时间":["1658402137949"]ART-URL / artifactory / api /存储/ auto-trashcan generic-local-2 /文件/中?属性
此外,这就是为什么下面的AQL查询是在auto-trashcan还有存储库。
接下来,让我们讨论如何以编程方式恢复所需的工件。这可以通过一个两步脚本来完成:
示例AQL查询
下面是一些示例AQL查询,它们演示了如何返回符合所需标准的工件列表。可以编辑这些查询以匹配用户想要的行为。每个查询都应该传递给前面提到的AQL搜索API端点,它将返回匹配标准的工件列表。
一个示例API调用可能看起来像这样:
curl -uadmin:password -XPOST http://ART-URL/artifactory/api/search/aql -d @spec。aql -H "Content-Type: text/plain")
其中spec.aql的格式为以下查询之一。
示例1:返回所有被' admin '用户删除的工件:
items.find (
{
“回购”:{" $ eq”:“auto-trashcan”},
"@trash.deletedBy": {"$eq": "admin"}
}
)
示例2:返回在给定时间范围内删除的所有工件:
items.find (
{
“回购”:{" $ eq”:“auto-trashcan”},
“美元和“:(
{" @trash。time": {"$gt": "TIMESTAMP-LOWER-BOUND"}},
{" @trash。time": {"$lt": "TIMESTAMP-UPPER-BOUND"}}
]
}
)
示例3:返回admin用户在给定时间范围内删除的所有工件:
items.find (
{
“回购”:{" $ eq”:“auto-trashcan”},
"@trash.deletedBy": {"$eq": "admin"},
“美元和“:(
{" @trash。time": {"$gt": "TIMESTAMP-LOWER-BOUND"}},
{" @trash。time": {"$lt": "TIMESTAMP-UPPER-BOUND"}}
]
}
)
修复文物
在上述AQL搜索端点上执行这些AQL查询将返回一个JSON对象,格式如下:
{
"results": [{
“回购”:“自动垃圾桶”;
"path": " general -local-2/files",
"name": "file1.txt",
"type": "file",
size: 15;
"created": "2022-06-23T12:44:29.150Z",
created_by: admin,
"modified": "2022-06-23T12:46:56.178Z",
modified_by: admin,
"updated": "2022-06-23T12:46:56.181Z"
},……
}
因此,作为恢复工件的最后一步,执行从垃圾桶中恢复物品结果数组中每个工件的端点。
