Search code examples
nexusnexus3

Get size of specific repository in Nexus 3


How can I get a size of specific repository in Nexus 3?

For example, Artifactory shows the repository "size on disk" via UI.

Does Nexus have something similar? If not - how can I get this information by script?


Solution

  • You can use admin task with groovy script nx-blob-repo-space-report.groovy from https://issues.sonatype.org/browse/NEXUS-14837 - for me turned out too slow

    Or you can get it from database:

    1. login with user-owner nexus installation on nexus server (e.g. nexus)

    2. go to application directory (e.g. /opt/nexus):

      $ cd /opt/nexus

    3. run java orient console:

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

    4. connect to local database (e.g. /opt/sonatype-work/nexus3/db/component):

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

    5. find out repository row id in @RID column by repository_name value:

      > select * from bucket limit 50;

    6. get sum for all assets with repo row id found in the previous step:

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

    result should be like (apparently in bytes):
    +----+------------+ |# |sum | +----+------------+ |0 |224981921470| +----+------------+

    nexus database connection steps took from https://support.sonatype.com/hc/en-us/articles/115002930827-Accessing-the-OrientDB-Console

    another useful queries

    summary size by repository name (instead 5 and 6 steps):

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

    top 10 repositories by size:

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