[[TOC()]] = [wiki:help/en Cyberduck Help] / [wiki:help/en/howto Howto] / Command Line Interface (CLI) = [https://duck.sh Cyberduck with a command line interface (CLI)] is available for Mac, Windows & Linux. It is installed as `duck`. == Installation == === Mac === ==== Homebrew ==== Available as a [http://brew.sh/ Homebrew] package. Use {{{ brew install duck }}} to install. ===== Snaphsot Builds ===== {{{ brew install iterate-ch/cyberduck/duck }}} ==== Package ==== [https://dist.duck.sh/ Download] the latest installer package. === Windows === ==== Chocolatey ==== Available as a [https://chocolatey.org Chocolatey] package. Use {{{ choco install duck }}} to install. ==== MSI Installer ==== [https://dist.duck.sh/ Download] the latest setup. [[Image(Cyberduck CLI Setup.png)]] === Linux === ==== RPM Package Repository ==== To add the `duck` repository to your system you need to put a file `duck.repo` with following content into `/etc/yum.repos.d/`. ===== Snaphsot Builds ===== Copy and paste {{{ echo -e "[duck-nightly]\n\ name=duck-nightly\n\ baseurl=https://repo.cyberduck.io/nightly/\$basearch/\n\ enabled=1\n\ gpgcheck=0" | sudo tee /etc/yum.repos.d/duck-snapshot.repo > /dev/null }}} to add the configuration. ===== Stable Builds ===== {{{ echo -e "[duck-stable]\n\ name=duck-stable\n\ baseurl=https://repo.cyberduck.io/stable/\$basearch/\n\ enabled=1\n\ gpgcheck=0" | sudo tee /etc/yum.repos.d/duck-stable.repo > /dev/null }}} To install ''Cyberduck CLI'' use {{{ sudo yum install duck }}} ==== DEB Package Repository ==== Add the `duck` repositories to your `/etc/apt/sources.list`: {{{ deb https://s3.amazonaws.com/repo.deb.cyberduck.io nightly main deb https://s3.amazonaws.com/repo.deb.cyberduck.io stable main }}} You need to download the GPG public key from `keyserver.ubuntu.com` to verify the integrity of the packages: {{{ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FE7097963FEFBE72 }}} Synchronize the repository using {{{ sudo apt-get update }}} To install or upgrade ''Cyberduck CLI'' use {{{ sudo apt-get install duck }}} === Manual installation === Packages can also be found for [https://dist.duck.sh/ download]. == Usage == Run `--help` to get the option screen. {{{ Usage:duck [options...] URLs must be fully qualified. Paths can either denote a remote file (ftps://user@example.net/resource) or folder ftps://user@example.net/directory/) with a trailing slash. Supported protocols ftp FTP (File Transfer Protocol) ftp://// ftps FTP-SSL (Explicit AUTH TLS) ftps://// sftp SFTP (SSH File Transfer Protocol) sftp://// dav WebDAV (Web-based Distributed Authoring and Versioning) dav://// davs WebDAV (HTTP/SSL) davs://// swift Swift (OpenStack Object Storage) swift:/// s3 S3 (Amazon Simple Storage Service) s3:/// gs Google Cloud Storage gs:/// azure Windows Azure Storage azure:/// rackspace Rackspace Cloud Files (US) rackspace:/// --application External editor application --copy Copy between servers -d,--download <[file]> Download file or folder. Denote a folder with a trailing '/' -e,--existing Transfer action for existing files Resume Append existing files (resume) Cancel (cancel) Rename Rename transferred files with a timestamp appended to the filename (similar) Compare Skip files that match size, modification date or checksum (compare) Rename existing Rename existing files with timestamp appended to filename (rename) Skip Skip transfer of files that already exist (skip) Overwrite Overwrite all files (overwrite) --edit Edit file in external editor -h,--help Print this help -i,--identity Selects a file from which the identity (private key) for public key authentication is read -l,--list List files in remote folder -L,--longlist Long list format with modification date and permission mask -p,--password Password -P,--preserve Preserve permissions and modification date for transferred files -q,--quiet Suppress progress messages -r,--retry Retry failed connection attempts --region Location of bucket or container --synchronize Synchronize folders -u,--username Username --upload Upload file or folder recursively -v,--verbose Print transcript -V,--version Show version number and quit }}} === URI === The `` argument for `---copy`, `--download`, `--upload` and `--synchronize` must be fully qualified URIs with protocol, hostname and absolute remote path such as `ftp:////` for a file or `ftp:////` for a directory. For cloud storage providers, reference the target container (aka bucket) name in the URI like `s3://bucketname/key`. === Generic options === ==== `--retry`==== Retry requests with I/O failures once per default. Useful on connection timeout or latency issues. ==== `--verbose` ==== Print protocol transcript for requests and responses. === Credentials === You can pass username as part of the URI prepending to the hostname with `username@host`. Alternatively use the `--username` option. You can give the password with the `--password` option or you will be prompted before the connection is opened by the program if no password matching the host is found in your login keychain (OS X) or user configuration shared with Cyberduck (Windows). ==== Private Key ==== When connecting with `SFTP` you can give a file path to a private key with `--identity` for use with public key authentication. === Downloads === === Uploads with `--upload` === ==== Glob pattern support for selecting files to transfer ==== If your shell supports glob expansion you can use a wildcard pattern to select files for upload like `duck --upload ftps:///directory/ ~/*.jpg`. === Remote directory listings with `--list` === Use the `-L` option to print permission mask and modification date in addition to filename. === Edit with `--edit` === You can edit remote files with your preferred editor on your local system using the `--edit` command. Use the optional `--application` option to specify the absolute path to the external editor you want to use.