Copy a Package

We provide two ways to copy a package from one repository to another:

  • Copy via the API using tools/integrations (such as the Cloudsmith CLI)
  • Copy via the Cloudsmith web app.

Copy via the Cloudsmith CLI

Identify a Package

To copy a package using the Cloudsmith CLI, you first need to identify the package. See Package Identification for full instructions on identifying packages.

Copy a Package

Once you have identified the package, you use the cloudsmith copy command to copy it:

shell
cloudsmith copy OWNER/SOURCE_REPO/UNIQUE_ID  DESTINATION_REPO

For example:

cloudsmith copy demo/examples-repo/IGgZrwGFAkyU examples-repo-public

In the above example, we identified that the package we wished to copy had the Unique ID "IGgZrwGFAkyU", and we copied it from the source repository "examples-repo" to the destination repository "examples-repo-public":

cloudsmith copy CLI example

Advanced Example

The example below would move all packages defined by the -q query from YOUR-ACCOUNT/YOUR-REPO to YOUR-DEST-REPO (note that the destination is NOT qualified by a YOUR-ACCOUNT namespace - This is because you can only copy/move packages from repositories in the same account, and not across accounts yet).

shell
cloudsmith ls pkg OWNER/SOURCE_REPO -q 'YOUR-QUERY'/
-F json | jq '.data[] | .namespace + "/" + .repository + "/" + .slug' -r / 
| xargs -Ipackage cloudsmith copy package DESTINATION_REPO

for the -q query you can use any terms that you would use when searching for a package (see Search / Filter Packages for full details). For example:

-q 'format:maven AND name:cloudsmith-api AND version:^0.21'

This query would target all Maven packages named cloudsmith-api with version 0.21.*

You can remove the query to target all packages. The only downside to this approach is that it might require multiple invocations if you have more than the page size limit.


Copy via the Cloudsmith web app

You can copy a package using the Cloudsmith web app:

  • Via the repository packages list
  • Via the package detail page

Copy via Repository Packages List

To copy a package via the Repository packages list, click the traffic sign button next to the right of the package then click "Copy" in the dropdown menu

Copy via Package Details page

To copy a package via the package details page, click the traffic light button next to the "Use Package" button in the upper right hand corner, then click on "Copy" in the dropdown menu

After clicking a "copy" button you will be presented with the Copy Package form. Select the destination repository from the drop-down menu and click "Copy" to complete the package copy:

You will then get an on-screen message confirming that the package copy was successful.