获取Nexus 3中特定存储库的大小

Iva*_*van 17 nexus nexus3

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

例如,Artifactory通过UI显示存储库"磁盘大小".

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

tmf*_*zkv 15

您可以使用来自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 row 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';
Run Code Online (Sandbox Code Playgroud)

按大小排名前10的存储库:

> select bucket.repository_name as repository,sum(size) as bytes from asset group by bucket.repository_name order by bytes desc limit 10;
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 Docker 映像 (sonatype/nexus3),则在连接到正在运行的 Docker 容器后 (`sudo docker exec -it <container-name> /bin/sh`),则 jar 可执行文件为:`java -jar / opt/sonatype/nexus/lib/support/nexus-orient-console.jar` 然后连接后的连接命令是 `> CONNECT PLOCAL:/nexus-data/db/component admin admin` (7认同)

Thi*_*iro 7

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

在此处输入图片说明

  • 对于新的存储库,这是一个非常好的提示(我赞成它),但它对现有的存储库没有帮助。 (3认同)