24

如何在 Nexus 3 中获取特定存储库的大小?

例如,Artifactory 通过 UI 显示存储库“磁盘上的大小”。

Nexus有类似的东西吗?如果不是 - 我如何通过脚本获取此信息?

4

2 回答 2

32

您可以使用来自https://issues.sonatype.org/browse/NEXUS-14837的 groovy 脚本 nx-blob-repo-space-report.groovy 的管理任务- 对我来说太慢了

或者您可以从数据库中获取它:

  1. 在 nexus 服务器(例如 nexus)上使用用户所有者 nexus 安装登录

  2. 转到应用程序目录(例如 /opt/nexus):

    $ cd /opt/nexus

  3. 运行 java orient 控制台:

    $ java -jar ./lib/support/nexus-orient-console.jar

  4. 连接到本地数据库(例如 /opt/sonatype-work/nexus3/db/component):

    > CONNECT PLOCAL:/opt/sonatype-work/nexus3/db/component admin admin

  5. 通过 repository_name 值找出 @RID 列中的存储库行 ID:

    > select * from bucket limit 50;

  6. 获取在上一步中找到的具有 repo 行 id 的所有资产的总和:

    > select sum(size) from asset where bucket = #15:9;

结果应该是这样的(显然以字节为单位):
+----+------------+ |# |sum | +----+------------+ |0 |224981921470| +----+------------+

nexus 数据库连接步骤取自https://support.sonatype.com/hc/en-us/articles/115002930827-Accessing-the-OrientDB-Console

另一个有用的查询

按存储库名称汇总大小(而不是 5 和 6 步):

> select sum(size) from asset where bucket.repository_name = 'releases';

按大小排列的前 10 个存储库:

> select bucket.repository_name as repository,sum(size) as bytes from asset group by bucket.repository_name order by bytes desc limit 10;
于 2018-07-06T21:52:32.977 回答
8

将每个存储库分配给它自己的 Blob 存储。

在此处输入图像描述

于 2018-06-25T00:51:48.227 回答