Using Cyberduck and duck CLI to access Oracle Cloud Infrastructure Classic Storage

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 and, 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


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.

$ wget " Storage Cloud.cyberduckprofile"
$ open "./Oracle Storage Cloud.cyberduckprofile"

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.

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

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 \ 
--password PASSWORD \
--list oracle://

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 \
--password PASSWORD \
--parallel 5 \
--upload oracle:// myimage.tar.gz

Download an object

$ duck --username \
--password PASSWORD \
--parallel 5 \
--download oracle:// ./target.dat

Synchronize a local directory with a remote container

$ duck --username \
--password PASSWORD \
--synchronize oracle:// ./source