The aims of the n3dr tool are:
- to backup all artifacts from a certain Nexus maven repository.
- to migrate all artifacts from NexusA to NexusB.
curl -L https://github.com/030/n3dr/releases/download/z.y.z/n3dr-linux -o n3dr-linux
curl -L https://github.com/030/n3dr/releases/download/z.y.z/n3dr-linux.sha512.txt -o n3dr-linux.sha512.txt
sha512sum --check n3dr-linux.sha512.txt
chmod +x n3dr-linux
./n3dr-linux
VERSION=z.y.z && \
curl -L https://github.com/030/n3dr/releases/download/${VERSION}/n3dr_${VERSION}-0.deb -o n3dr.deb && \
sudo apt -y install ./n3dr.deb
user@computer:~/dev$ ./n3dr-linux -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
Use "n3dr [command] --help" for more information about a command.
Define the password in ~/.n3dr.yaml
:
---
n3drPass: admin123
and set the permissions to 400 by issuing:
chmod 400 ~/.n3dr.yaml
All artifacts from a repository will be stored in a download folder when the following command is run:
./n3dr-linux backup -u admin -n http://localhost:8081 -r maven-releases
All artifacts from various repositories will be stored in a download folder when the following command is issued:
./n3dr-linux repositories -u admin -n http://localhost:8081 -b
Note: a new folder will be created for every repository:
- download/maven-public
- download/maven-releases
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-linux 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
the -x
option as well:
./n3dr-linux 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.
It is possible to upload all JARs that reside in a folder by running the following command:
./n3dr-linux upload -u admin -n http://localhost:8081 -r maven-public
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>
Although there is a number of equivalent tools:
- https://github.com/RiotGamesMinions/nexus_cli
- https://github.com/packagemgmt/repositorytools
- https://github.com/thiagofigueiro/nexus3-cli
None of them seems to be able to backup all repositories by running a single command.