Cyberduck is a free (donation supported) remote file and object store management client available for Windows and MacOS. This article provides a quick overview of using Cyberduck, and the associate duck CLI, with the Oracle Cloud Infrastructure Storage Classic object storage services

First download and install Cyberduck and duck from https://cyberduck.io and https://duck.sh/, or use one of the supported package installer such a Choco on Windows, or Homebrew on MacOS, e.g.

$ brew cask install cyberduck

$ brew install duck

Cyberduck

To use the Cyberduck UI with your Oracle Cloud Infrastructure Storage Classic account first download and import the Oracle Storage Cloud.cyberduckprofile to setup the Oracle Cloud specific Swift configuration profile.

After the profile has been imported an “Oracle Storage Cloud” selection will appear as a new connection type

To connect to a storage account set the required account credentials

Server - the tenancy specific storage URL, starting with the identity domain or service id, e.g.

example.storage.oraclecloud.com

ServiceName-IdentityDomain:Username - The Storage account username in the format “Storage-<identitydomain>:<username>” e.g.

Storage-example:user@example.com

duck CLI

The duck command line interface uses the same Oracle Storage Cloud.cyberduckprofile configured above in the Cyberduck GUI. After the the .cyberduckprofile has been imported in the UI the duck command line tool will show support for an additional oracle:// connection protocol

As before the username must be in the format “Storage-<identitydomain>:<username>”. The container path must include the full storage cloud URL with the Identity Domain or Service ID prefix, e.g.

$ duck --username Storage-example:user@example.com \

--password PASSWORD \

--list oracle://example.storage.oraclecloud.com/mycontainer/

The duck CLI can be provides and easy way to automate file upload, download and synchronization tasks.

Example usage

Upload a Compute Cloud virtual machine image to the compute_images container

$ duck --username Storage-example:user@example.com \

--password PASSWORD \

--parallel 5 \

--upload oracle://example.storage.oraclecloud.com/compute_images/ myimage.tar.gz

Download an object

$ duck --username Storage-example:user@example.com \

--password PASSWORD \

--parallel 5 \

--download oracle://example.storage.oraclecloud.com/source.dat ./target.dat

Synchronize a local directory with a remote container