如何计算终端中nexus存储库管理器OSS 3.2.1中的人工制品数量

时间:2017-05-02 11:23:33

标签: shell sh nexus blobs

从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商店下存储的人工制品数量。

1 个答案:

答案 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