【问题标题】:How to restore a deleted component in Sonatype Nexus 3如何在 Sonatype Nexus 3 中恢复已删除的组件
【发布时间】:2017-11-22 13:48:59
【问题描述】:

在 Nexus Repository Manager 2 中,您可以将服务器上已删除的资产/组件从 .trash 文件夹移动到存储库,以恢复您可能已删除的任何内容。这是因为 Nexus 将组件作为单独的文件存储在磁盘上。

Sonatype Nexus 3 将组件存储为 blob。我的猜测是,对于 Nexus 3,删除会将组件标记为在数据库的某些列中已删除。使用 Sonatype 连接数据库的解决方案是否提供了指令并操作数据库数据?

在这种情况下,Sonatype 支持具有以下信息:https://support.sonatype.com/hc/en-us/articles/115002930827-Accessing-the-OrientDB-Console

简而言之:

Unix

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

Windows

java -jar lib\support\nexus-orient-console.jar

苹果机

.install4j/jre.bundle/Contents/Home/jre/bin/java -jar ./lib/support/nexus-orient-console.jar

退出控制台:

exit

我使用的 Nexus Repository Manager 是 3.2.0-01 版,nexus-orient-console.jar 也在该版本中。

【问题讨论】:

    标签: nexus sonatype nexus3


    【解决方案1】:

    这将很难做到。记录与散列和属性一起在几个不同的表中创建。我会建议您不要尝试这样做,因为它可能会变得混乱。如果您打算这样做,您可能想看看如何在组件表和资产表中创建记录,并尽可能地重新创建(如果可能的话)。

    不过,我想了解更多关于您的用例的信息。听起来您想要的是 Nexus Repository 中的一个“垃圾桶”,以便您可以恢复已删除的项目。如果您能解释原因,那将很有帮助。

    【讨论】:

    • 谢谢。在我的案例中,大部分删除都是通过 Tasks 完成的。在快照存储库上运行清理任务时,已发布的组件有可能会突然删除快照依赖项。 Nexus2 还存在不幸的“我删除了一个错误的版本”的情况,通过将 .trash 文件夹中的工件移动到之前的存储库,很容易纠正这种情况。
    • 我不知道这个问题有多普遍,但它肯定会帮助我维护存储库并控制磁盘使用情况。附带说明一下,我希望删除任务能够记录已删除的组件,而不仅仅是删除的数量。事实上,我会喜欢一个“垃圾桶”类型的功能,在我运行紧凑的 blob 存储任务之前,我可以看到要永久删除的组件。我可以从这个“垃圾桶”中恢复组件。
    • 感谢您的解释,我已经将这个发给内部的几个人来查看。
    • 我们也对此感兴趣。会不会进入 Sonatype Nexus OSS 3.x 的功能列表?
    【解决方案2】:

    如果要恢复软删除的存储库和 blob,解决方案是使用原始名称创建 blob 存储,并创建与存储库相同的名称。 然后运行“repair - reconcile component database from blob store”任务。

    注意:您也可以更改 Blob 存储名称和存储库。在 blob 中,用新的 repo 名称替换所有属性文件。

    此方法适用于将 blob 存储和 repo 移动到其他 nexus 服务器。

    【讨论】:

    • 问题是如何恢复已删除的组件。我对恢复整个存储库和相关的 blob 存储并不感兴趣。
    【解决方案3】:

    理论上,这可能会有所帮助:https://community.sonatype.com/t/how-to-undo-asset-soft-delete-in-nxrm3/271/9

    免责声明...以下说明使用当前 blob 存储的实现细节。因此,它们不受官方支持,并且如果实施发生变化,它们将无法工作。

    与 blob 存储中的每个 blob 相关联的是一个属性文件。例如,一个特定的 blob 文件将包含两个文件:

    fac5e64d-831b-4b58-98c9-3dd0e4bd1b59.bytes fac5e64d-831b-4b58-98c9-3dd0e4bd1b59.properties

    在属性文件中,您会看到如下内容:

    #2018-08-22 08:33:33,965-0500
    #Wed Aug 22 08:33:33 CDT 2018
    @BlobStore.created-by=admin
    size=40
    @Bucket.repo-name=maven-releases
    creationTime=1534944813965
    @BlobStore.created-by-ip=127.0.0.1
    @BlobStore.content-type=text/plain
    @BlobStore.blob-name=org/foo/bar/project/1.2.3/project-1.2.3.jar
    sha1=30d7edff3bc3f5e601be9529460b7bd573b1a8b7
    deleted=true
    

    “@Bucket.repo-name”属性显示 blob 与哪个存储库关联。 “deleted=true”表示 blob 处于软删除状态。

    要恢复软删除的文件,请找到属性文件并删除

    deleted=true
    

    线。然后安排并运行“修复:从 blobstore 协调组件数据库”任务。

    协调任务有一些限制

    【讨论】:

      猜你喜欢
      • 2016-07-19
      • 1970-01-01
      • 2018-07-25
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 2020-03-19
      相关资源
      最近更新 更多