{"id":17817196,"url":"https://github.com/030/n3dr","last_synced_at":"2025-05-09T01:29:03.871Z","repository":{"id":36079020,"uuid":"183309484","full_name":"030/n3dr","owner":"030","description":"Nexus3 Disaster Recovery (N3DR) is a tool that is capable of downloading all artifacts from a Nexus3 server and to migrate them to another one.","archived":false,"fork":false,"pushed_at":"2025-05-03T06:49:30.000Z","size":2136,"stargazers_count":153,"open_issues_count":62,"forks_count":40,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-05-03T07:39:15.637Z","etag":null,"topics":["artifact-management","artifacts","artifacts-repository","backup","backup-tool","configuration-as-code","disaster-recovery","go","golang","golang-application","golang-tools","migration-tool","n3dr","nexus","nexus3","nexus3-oss","restore"],"latest_commit_sha":null,"homepage":"https://n3dr.releasesoftwaremoreoften.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/030.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-04-24T21:29:11.000Z","updated_at":"2025-04-21T20:29:35.000Z","dependencies_parsed_at":"2023-02-15T13:31:48.040Z","dependency_job_id":"3c060d05-ae45-4e4d-a809-ff3973477cb5","html_url":"https://github.com/030/n3dr","commit_stats":null,"previous_names":[],"tags_count":116,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/030%2Fn3dr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/030%2Fn3dr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/030%2Fn3dr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/030%2Fn3dr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/030","download_url":"https://codeload.github.com/030/n3dr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253173724,"owners_count":21865745,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artifact-management","artifacts","artifacts-repository","backup","backup-tool","configuration-as-code","disaster-recovery","go","golang","golang-application","golang-tools","migration-tool","n3dr","nexus","nexus3","nexus3-oss","restore"],"created_at":"2024-10-27T16:41:09.265Z","updated_at":"2025-05-09T01:29:03.845Z","avatar_url":"https://github.com/030.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# N3DR\n\n[![CI](https://github.com/030/n3dr/workflows/Go/badge.svg?event=push)](https://github.com/030/n3dr/actions?query=workflow%3AGo)\n[![GoDoc Widget]][godoc]\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/030/n3dr?logo=go)\n[![Go Report Card](https://goreportcard.com/badge/github.com/030/n3dr)](https://goreportcard.com/report/github.com/030/n3dr)\n[![StackOverflow SE Questions](https://img.shields.io/stackexchange/stackoverflow/t/n3dr.svg?logo=stackoverflow)](https://stackoverflow.com/tags/n3dr)\n[![DevOps SE Questions](https://img.shields.io/stackexchange/devops/t/n3dr.svg?logo=stackexchange)](https://devops.stackexchange.com/tags/n3dr)\n[![ServerFault SE Questions](https://img.shields.io/stackexchange/serverfault/t/n3dr.svg?logo=serverfault)](https://serverfault.com/tags/n3dr)\n[![Docker Pulls](https://img.shields.io/docker/pulls/utrecht/n3dr?logo=docker\u0026logoColor=white)](https://hub.docker.com/r/utrecht/n3dr)\n[![Docker Image Size (latest semver)](https://img.shields.io/docker/image-size/utrecht/n3dr?logo=docker\u0026logoColor=white\u0026sort=semver)](https://hub.docker.com/r/utrecht/n3dr)\n![Issues](https://img.shields.io/github/issues-raw/030/n3dr.svg)\n![Pull requests](https://img.shields.io/github/issues-pr-raw/030/n3dr.svg)\n![Total downloads](https://img.shields.io/github/downloads/030/n3dr/total.svg)\n![GitHub forks](https://img.shields.io/github/forks/030/n3dr?label=fork\u0026style=plastic)\n![GitHub watchers](https://img.shields.io/github/watchers/030/n3dr?style=plastic)\n![GitHub stars](https://img.shields.io/github/stars/030/n3dr?style=plastic)\n![License](https://img.shields.io/github/license/030/n3dr.svg)\n![Repository Size](https://img.shields.io/github/repo-size/030/n3dr.svg)\n![Contributors](https://img.shields.io/github/contributors/030/n3dr.svg)\n![Commit activity](https://img.shields.io/github/commit-activity/m/030/n3dr.svg)\n![Last commit](https://img.shields.io/github/last-commit/030/n3dr.svg)\n![Release date](https://img.shields.io/github/release-date/030/n3dr.svg)\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/030/n3dr?logo=github\u0026sort=semver)](https://github.com/030/n3dr/releases/latest)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=bugs)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=code_smells)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=sqale_index)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=030_n3dr\u0026metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=030_n3dr)\n[![codecov](https://codecov.io/gh/030/n3dr/branch/main/graph/badge.svg)](https://codecov.io/gh/030/n3dr)\n[![GolangCI](https://golangci.com/badges/github.com/golangci/golangci-web.svg)](https://golangci.com/r/github.com/030/n3dr)\n[![Chocolatey](https://img.shields.io/chocolatey/dt/n3dr)](https://chocolatey.org/packages/n3dr)\n[![n3dr](https://snapcraft.io//n3dr/badge.svg)](https://snapcraft.io/n3dr)\n[![codebeat badge](https://codebeat.co/badges/f4aa5086-a4d5-41cd-893a-5da816ee9107)](https://codebeat.co/projects/github-com-030-n3dr-main)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-%23FE5196?logo=conventionalcommits\u0026logoColor=white)](https://conventionalcommits.org)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n\n[godoc]: https://godoc.org/github.com/030/n3dr\n[godoc widget]: https://godoc.org/github.com/030/n3dr?status.svg\n\n[![dockeri.co](https://dockeri.co/image/utrecht/n3dr)](https://hub.docker.com/r/utrecht/n3dr)\n\nNexus3 Disaster Recovery (N3DR).\n\n## Backup or Migrate an entire Nexus Artifact Server\n\nDownload all artifacts at once or migrate automatically from Nexus to Nexus.\n\nAlthough the [Nexus backup and restore documentation](https://help.sonatype.com/repomanager3/backup-and-restore)\nindicates that one could backup and restore Nexus, the data seems not to be\nrestored completely as 500 errors occur when an artifact is downloaded from the\nUI after restore. It could also be possible that some steps were not issued as\nthey have should been. Apart from that, the restore is capable of restoring the\nNexus configuration.\n\nN3DR excludes the backup of group repositories and is able to backup various\nrepositories, configure them, restore artifacts or migrate them to another\nNexus3 server. Table 1 indicates what is supported by N3DR.\n\nNote: uploads to proxy repositories are not supported by Nexus3 itself. As a\nworkaround one could create a hosted repository in Nexus and upload the backed\nup proxy content to it.\n\nThe aims of the n3dr tool are:\n\n- to backup artifacts from a certain Nexus3 repository.\n- to migrate and/or restore them to another Nexus3 server.\n- configuration-as-code (cac).\n\n| type      | backup | upload | label | cac |\n| --------- | ------ | ------ | ----- | --- |\n| apt       | x      | x      | `^`   | x   |\n| bower     |        |        |       |     |\n| cocoapods |        |        |       |     |\n| composer  |        |        |       |     |\n| conan     |        |        |       |     |\n| conda     |        |        |       |     |\n| cpan      |        |        |       |     |\n| docker    | x      | x      | ``    | x   |\n| elpa      |        |        |       |     |\n| gitlfs    |        |        |       |     |\n| go        |        |        |       |     |\n| helm      |        |        |       |     |\n| maven2    | x      | x      | `+`   | x   |\n| npm       | x      | x      | `*`   | x   |\n| nuget     | x      | x      | `$`   | x   |\n| p2        |        |        |       |     |\n| pypi      |        |        |       |     |\n| r         |        |        |       |     |\n| raw       | x      | x      | `%`   | x   |\n| rubygems  | x      | x      | `-`   | x   |\n| yum       | x      | x      | `#`   | x   |\n| unknown   | n/a    | n/a    | `?`   |     |\n\n**Table 1**: Overview of Nexus3 types that can be downloaded, uploaded and/or\nconfigured by N3DR.\n\n## Quickstarts\n\n- [docker](./docs/quickstarts/DOCKER.md)\n- [maven2](./docs/quickstarts/MAVEN2.md)\n- [rubygems](./docs/quickstarts/RUBYGEMS.md)\n\n## Instructions\n\n- [snap](./docs/instructions/snap.md)\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/030/n3dr.svg)](https://starchart.cc/030/n3dr)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F030%2Fn3dr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F030%2Fn3dr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F030%2Fn3dr/lists"}