为什么存储信息REST API帐户重复docker层,我们如何避免它?
如本文所述JIRA我们报告了存储信息REST接口值得一提的是,响应的这一部分报告的大小确实计算了重复层,并且它的目的是这样的。
这个调用使用了与Artifactory UI的Storage页面显示的相同的信息:
您可能已经知道有两种不同的大小:二进制文件大小(橙色)和工件大小(绿色)。二进制大小是计算一次的每个文件的大小,它是您想要的存储库大小的值,用蓝线表示。正如您在该表中看到的,所有存储库加起来就是工件的总大小,这就是为什么调用在响应中计算副本的原因。
我们不提供每个仓库的二进制文件大小的原因是,从技术上讲,这是不存在的。您可以删除包含1TB工件的整个存储库,并且如果在不同的存储库中有足够的引用,您可能无法释放单个兆字节的空间。但是,我们知道计算工件的重复数据删除大小是有用的,并且我们可以使用AQL.
例如,如果每个校验和计数一次,这个Python3脚本将得到每个repo的大小并打印出结果:def审计():
# API请求的必要库
从集合中导入defaultdict #用于计数的良好数据结构
Base_url = 'http://localhost:8081/artifactory/' #您的工件实例
headers = {'content-type': 'text/plain',} #查询头
Data = 'items.find({"name":{"$match":"*"}})。include("actual_sha1", "repo", "size")' #查询所有工件
myResp =请求。post(base_url+'api/search/aql', auth=('admin', 'password'), headers=headers, data=data) #执行查询
myResp = eval(myResp.text)
Total = defaultdict(int)
回购= {}
查询myResp["results"]中的条目:
试一试:
回购(项目(“回购”]][[“actual_sha1”]]项=项目(“大小”)
除了:
回购[item["回购"]]= {}
回购(项目(“回购”]][[“actual_sha1”]]项=项目(“大小”)
Total [item["repo"]] += int(item["size"])
对于repo, repository .items()中的工件:
print(" Repo{}中每个工件的存储空间".format(Repo))
对于工件,在artifacts.items()中的大小:
print("[{}]——校验和:{}——大小:{}"。格式(repo,工件,大小)
打印 ("==================")
打印 ("==================")
打印 ("==================")
对于repo, total在total.items()中:
print("Repo{}总共使用了{}个byes."格式(回购))
如果__name__ == '__main__':
审计()
下面是输出的一个例子:
Repo测试通用的每个工件的存储空间
[test-generic]—校验和:3ae3f83349b04656faa27ae59b2287c06bdc428b—大小:423232
[test-generic]—校验和:591d8d38b865ab1ef4218120779f78ec950d97b0—大小:3045251
[test-generic]—校验和:a113a4b034a150990514c3f0c6f1c0f2b72384a5—大小:1410580
==================
Repo核本地的每个工件的存储空间
[nuget-local]—校验和:3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3—大小:1048576
[...更多的数据…]
Repo debian-remote-cache中每个工件的存储空间
[debian-remote-cache]—校验和:a113a4b034a150990514c3f0c6f1c0f2b72384a5—大小:1410580
==================
每个工件用于Repo中心缓存的存储空间
[jcenter-cache]—校验和:b899da20a0f408d00cfe32a268458fb401d5d698—大小:1546674
==================
Repo test-generic-2的每个工件的存储空间
[test- general -2]—校验和:e6bbc45386305b92f08f894deb1b47c66bd3d815—大小:788
==================
==================
==================
Repo npm-remote-cache总共使用2699个字节。
Repo docker-remote-cache总共使用了553个字节。
Repo pypi-local总共使用163个字节。
Repo lib -release-local总共使用了34个字节。
Repo conan-local总共使用791405个字节。
Repo pypi-remote-cache总共使用了17592个字节。
Repo debian-local总共使用了713个字节。
Repo test-generic总共使用了423232个字节。
Repo nuget-local总共使用1048576个字节。
Repo测试缓存总共使用5836个字节。
Repo debian-remote-cache总共使用1410580个字节。
Repo jcenter-cache总共使用了1546674字节。
Repo test-generic-2总共使用了788个字节。
