【问题标题】:Nexus Repository Manager - removing old binary resourcesNexus Repository Manager - 删除旧的二进制资源
【发布时间】:2022-04-05 16:38:10
【问题描述】:

我想知道是否有办法从 nexus 存储库中删除许多项目。我有一些带有一些 Web 应用程序版本的 RAW 类型存储库(简单的 tar.bz2 二进制文件):

在一些存储库中有很多。我想释放一些磁盘空间。我可以删除单个文件:

但我没有看到批量删除选项。

对我来说最好的解决方案是自动或手动清理旧文件。免费版可以吗?如果是 - 如何?

我在主菜单中没有看到Cleanup Policies

Nexus Repository ManagerOSS 3.3.2-02

【问题讨论】:

  • 你读过Cleanup Policies吗?
  • 好建议。我已阅读此材料,不幸的是Admin - Cleanup Tags 仅适用于专业版。我使用开源版本。
  • 您需要Admin - Cleanup Tags 任务吗?
  • 我需要一些东西来从raw类型存储库中删除旧的未使用版本 - 自动或手动:)
  • 没有未使用的标签 =/= 未使用的版本?

标签: java nexus artifacts nexus3 resource-cleanup


【解决方案1】:

Nexus3 OSS 完全可以做到这一点:

1.创建清理政策
在“存储库 -> 清理策略”下,您可以添加一个从存储库中删除工件的策略:

  • 在 X 天之前发布
  • X 天前最后一次下载

2。将此政策添加到您的存储库
编辑您的存储库。在“清理政策”下选择您的新政策。

由于只清理了存储库soft-delete 工件(将它们标记为删除),您需要:

3。压缩您的 Blob 存储
进入“系统 -> 任务 -> 创建任务”,选择“管理员 - 压缩 Blob 存储”任务,选择存储库的 Blob 存储并将此任务配置为在清理任务之后运行。

所有这些都在nexus documentation 中有更详细的描述。

我已经用 Nexus 3.15.2-01 OSS 版本测试了这些步骤。

【讨论】:

  • 可以添加一些截图吗?我没有看到cleanup policy 部分:photos.app.goo.gl/jSsaDWbven6sEmxg8
  • Image。你有管理员权限吗?
  • 我可以删除和修改所有存储库、blob 故事等...所以我认为我有管理员权限 - 我的菜单中没有看到 Cleanup Policies
  • 是的,我有管理员权限:photos.app.goo.gl/t2t3aNuXEkkcp5uFA
  • @KrzysztofRaciniewski 在 NXRM 3.14.0 中添加了清理策略 - 您运行的是什么版本?
【解决方案2】:

我找到了解决问题的方法。

我的管理控制台中没有Cleanup Policy 部分(I think this option is available only for professional or nevest versions) - 谢谢@Sebastian 的建议,您将我引导至解决方案。

基于这个问题:Purge old release from Nexus 3

我创建了一些手动任务来清理我的二进制存储库:

我的清理任务非常简单,但任何需要更复杂的东西的人都可以编写自己的 Groovy 脚本或寻找现成的解决方案。

import org.sonatype.nexus.repository.storage.Component
import org.sonatype.nexus.repository.storage.Query
import org.sonatype.nexus.repository.storage.StorageFacet

def removeFromDate = '2019-02-01'

log.info("delete components for repository: HereYourRepoName")
def compInfo = { Component c -> "${c.group()}:${c.name()}:${c.version()}[${c.lastUpdated()}]}" }
def repo = repository.repositoryManager.get("HereYourRepoName")
StorageFacet storageFacet = repo.facet(StorageFacet)

def tx = storageFacet.txSupplier().get()
tx.begin()
Iterable<Component> components = tx.findComponents(Query.builder().where('last_updated < ').param(removeFromDate).build(), [repo])
tx.commit()
tx.close()

log.info("about to delete " + components.flatten(compInfo))
for(Component c : components) {
    log.info("deleting " + compInfo(c))
    tx2 = storageFacet.txSupplier().get()
    tx2.begin()
    tx2.deleteComponent(c)
    tx2.commit()
    tx2.close()
}

log.info("finished deleting " + components.flatten(compInfo))

日志查看器对调试脚本非常有帮助:)

【讨论】:

  • 你需要升级,3.3.2版本太旧了。该版本中没有清理策略。
  • 不幸的是,目前这是不可能的,但感谢您的建议 :)
  • FTR,清理策略自 NXRM 3.14.0 起可用
猜你喜欢
  • 2016-12-14
  • 2017-12-19
  • 1970-01-01
  • 2011-08-07
  • 2016-03-10
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多