5

在 Nexus Repository Manager 2 中,您可以将服务器上已删除的资产/组件从 .trash-folder 移动到存储库,以恢复您可能已删除的任何内容。这是因为 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

视窗

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 也在该版本中。

4

3 回答 3

0

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

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

于 2017-06-20T23:05:36.277 回答
0

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

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

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

于 2020-09-23T18:46:27.220 回答
0

从理论上讲,这可能会有所帮助: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 协调组件数据库”任务。

协调任务有一些限制

于 2021-12-13T17:07:14.443 回答