Download all artifacts at once or migrate automatically from Nexus to Nexus.
Although the Nexus backup and restore documentation indicates that one could backup and restore Nexus, the data seems not to be restored completely as 500 errors occur when an artifact is downloaded from the UI after restore. It could also be possible that some steps were not issued as they have should been. Apart from that, the restore is capable of restoring the Nexus configuration.
N3DR excludes the backup of group repositories and is able to backup all Maven2 and NPM repositories and migrate and/or restore Maven2 artifacts to another Nexus server.
Note: uploads to proxy and snapshot repositories are not supported by Nexus itself. As a workaround one could create a hosted repository in Nexus and upload the backed up proxy content to it.
The aims of the n3dr tool are:
snap install n3dr
Note: one has to run n3dr from the home folder if this installation mode is chosen. Otherwise a permission denied issue could occur, while creating the backup zip.
Get the darwin artifact from the releases tab.
choco install n3dr
Create a user, e.g. n3dr-download in Nexus3, create a role, e.g. n3dr-download and assign the following roles:
In order to upload artifacts, additional privileges are required:
user@computer:~/dev$ n3dr -h N3DR is a tool that is able to download all artifacts from a certain Nexus3 repository. Usage: n3dr [command] Available Commands: backup Backup all artifacts from a Nexus3 repository help Help about any command repositories Count the number of repositories or return their names upload Upload all artifacts to a specific Nexus3 repository Flags: -v, --apiVersion string The Nexus3 APIVersion, e.g. v1 or beta (default "v1") -d, --debug Enable debug logging -h, --help help for n3dr --insecureSkipVerify Skip repository certificate check -p, --n3drPass string The Nexus3 password -n, --n3drURL string The Nexus3 URL -u, --n3drUser string The Nexus3 user -z, --zip Add downloaded artifacts to a ZIP archive --directory-prefix string The directory prefix is the directory where artifacts will be saved Use "n3dr [command] --help" for more information about a command.
In order to download as a anonymous user, one has to use the
Define the password in
--- n3drPass: admin123
and set the permissions to read-write by issuing:
chmod 0600 ~/.n3dr/config.yml
Note: other variables like
n3drUser could also be added to the
config file and one could use
--config to overwrite the default config path.
All artifacts from a repository will be stored in a download folder when the following command is run:
n3dr backup -u admin -n http://localhost:8081 -r maven-releases
All artifacts from a repositories list will be stored in a download folder when the following command is run:
n3dr backup -u admin -n http://localhost:8081 -r maven-releases,maven-private
All artifacts from various repositories will be stored in a download folder when the following command is issued:
n3dr repositories -u admin -n http://localhost:8081 -b
Note: a new folder will be created for every repository:
It is possible to only download artifacts that match a regular expression. If one would like to download all artifacts from ‘some/group42’ then one could do that as follows:
n3dr backup -u admin -n http://localhost:8081 -r maven-releases -x 'some/group42'
If one would like to deploy is while download from all repositories then use
-x option as well:
n3dr repositories -u admin -n http://localhost:8081 -b -x 'some/group42'
In order to add all archives to a zip archive, one has to use the –zip or -z flag.
If one would like to overwrite the default zip file name, then one has to use
-i option. Note: the extension ‘.zip’ is obliged.
It is possible to upload all JARs that reside in a folder by running the following command:
n3dr upload -u admin -n http://localhost:8081 -r maven-public
It is possible to upload non maven files like deb files as well by setting the
artifactType option to the repository type, e.g.
-t=apt. Note that the folder
name that contains the files should match the repository name.
Suppose that one has created a new Nexus3 repository, e.g. NexusNEW and that one would like to copy the content of the old repository, e.g. NexusOLD, then these basic steps could be issued to “clone” NexusOLD:
n3dr backup -u <old-nexus3-user> -n <old-nexus3-server-url> \ -r <old-repo-source-name> cd download mv <old-repo-source-name> <new-repo-target-name> n3dr upload -u <new-target-nexus3-user> -n <new-target-nexus3-server-url> \ -r <new-repo-target-name>
n3dr supports backing up to OCI Object Storage.
To enable this option you need to
If you want to remove local copies (after the object has been uploaded), add
--npm parameter to backup NPM artifacts.
go run main.go backup -npm -n some-url -r some-npm-repo -d --npm
go get -u github.com/gobuffalo/packr/v2/packr2 ~/go/bin/packr2 clean ~/go/bin/packr2
import _ "github.com/030/n3dr/packrd"
Although there is a number of equivalent tools:
None of them seems to be able to backup all repositories by running a single command.