从Nexus Repository Manager OSS 2.14.3升级到3.2.1后,我无法弄清楚如何计算存储在特定blob存储下的每个存储库中的人工制品数量,作为验证数据升级的一部分。从界面手动计数是不实际的,因为我们在生产中有超过10K的文物。
计算2.x中的人工制品(总共包含3件文物)
[root@977d4b9b2a70 local]# ll sonatype-work/nexus/storage/releases/sample/1/1/1-1*zip
-rw-r--r-- 1 root root 152818 May 2 06:38 sonatype-work/nexus/storage/releases/sample/1/1/1-1-1.zip
-rw-r--r-- 1 root root 145119 May 2 06:38 sonatype-work/nexus/storage/releases/sample/1/1/1-1-2.zip
-rw-r--r-- 1 root root 1152 May 2 06:38 sonatype-work/nexus/storage/releases/sample/1/1/1-1.zip
[root@977d4b9b2a70 local]# ll sonatype-work/nexus/storage/releases/sample/1/1/1-1*zip | wc -l
3
[root@977d4b9b2a70 local]#
计算3.x中的人工制品(从2.x升级相同的存储库内容后)
[root@977d4b9b2a70 local]# ll sonatype-work/nexus3/blobs/releases/content/ | wc -l
14
[root@977d4b9b2a70 local]# ll sonatype-work/nexus3/blobs/releases/content/
total 52
drwxr-xr-x 2 root root 4096 May 2 06:42 tmp
drwxr-xr-x 3 root root 4096 May 2 06:42 vol-12
drwxr-xr-x 3 root root 4096 May 2 06:42 vol-13
drwxr-xr-x 4 root root 4096 May 2 06:42 vol-16
drwxr-xr-x 4 root root 4096 May 2 06:42 vol-22
drwxr-xr-x 3 root root 4096 May 2 06:42 vol-24
drwxr-xr-x 3 root root 4096 May 2 06:42 vol-31
drwxr-xr-x 4 root root 4096 May 2 06:42 vol-34
drwxr-xr-x 3 root root 4096 May 2 06:42 vol-36
drwxr-xr-x 3 root root 4096 May 2 06:42 vol-37
drwxr-xr-x 3 root root 4096 May 2 06:42 vol-41
drwxr-xr-x 4 root root 4096 May 2 06:42 vol-42
drwxr-xr-x 3 root root 4096 May 2 06:42 vol-43
[root@977d4b9b2a70 local]#
为什么后者将计数显示为 14 。据我所知,从3.x开始,人工制品被存储为BLOBS而不是文件。
有没有其他方法可以计算3.x使用终端在每个blob商店下存储的人工制品数量。
答案 0 :(得分:1)
我找到了一个groovy脚本,用于计算repositroy中资产和组件的数量,您可以通过Nexus 3.x ui中的Execute Script task
运行此脚本。
import org.sonatype.nexus.repository.Repository
import org.sonatype.nexus.repository.storage.Query
import org.sonatype.nexus.repository.storage.StorageFacet
import groovy.json.JsonOutput
def result = [:]
def totalComponents = 0
def totalAssets = 0
repository.repositoryManager.browse().each { Repository repo ->
def tx = repo.facet(StorageFacet).txSupplier().get()
tx.begin()
def components =
tx.countComponents(Query.builder().where('1').eq(1).build(), [repo])
def assets = tx.countAssets(Query.builder().where('1').eq(1).build(),
[repo])
tx.commit()
totalComponents += components
totalAssets += assets
result[repo.name] = [components: components, assets: assets]
}
result["_totals"] = [components : totalComponents, assets : totalAssets]
def json = JsonOutput.toJson(result)
log.info json
return json