Skip to content

Connect with s3cmd

View as Markdown

s3cmd is a command-line tool for S3-compatible storage that works the same way against Object Storage as it does against Amazon S3. You need a bucket and an access key first; see Generate an access key.

On Linux, install it from your distribution’s package manager: yum install s3cmd on CentOS or RHEL, sudo apt-get install s3cmd on Ubuntu or Debian. On macOS, use Homebrew: brew install s3cmd. On Windows, s3cmd runs on Python, so you install Python first and then s3cmd; Install s3cmd on Windows walks through both.

s3cmd supports Python 3 from its version 2 onward. Python 3.12 is the newest version the s3cmd project lists, so it is a good choice.

  1. Download the Python 3.12 installer from python.org/downloads/windows and run it. On the installer’s first page, tick the option to add Python to PATH, so you can run python from any Command Prompt. If you missed it, run the installer again, choose Modify, and tick it there.

  2. Open a new Command Prompt and check that Windows finds Python:

    python --version

    It prints the version you installed, such as:

    Python 3.12.10
  3. Install the one library s3cmd needs to run:

    python -m pip install python-dateutil
  4. Download the s3cmd .zip file from its official page and extract it. Rename the folder it creates to C:\s3cmd, so that the s3cmd file sits directly inside that folder.

  5. Move into the folder and check that s3cmd starts:

    cd C:\s3cmd
    python s3cmd --version

    It prints its version, such as s3cmd version 2.4.0.

On Windows, you start s3cmd through Python from this folder. Every command on this page works the same way with python put in front of it: python s3cmd --configure, python s3cmd ls s3://<bucket-name>, and so on.

Run the configuration wizard:

s3cmd --configure

Enter your access key and secret key when asked. For S3 Endpoint, enter objectstore.e2enetworks.net for a Delhi bucket, or the Chennai endpoint from S3 compatibility for one there. For the DNS-style bucket template, enter %(bucket)s.objectstore.e2enetworks.net in Delhi, or the same pattern with your region’s endpoint in place of it: %(bucket)s. followed by the Chennai endpoint for a bucket there. The DNS-style template is how s3cmd builds each bucket’s address from your endpoint: the %(bucket)s. part is where s3cmd substitutes the bucket name, so every bucket gets an address like <bucket-name>.objectstore.e2enetworks.net. Leave the region blank, and accept the rest of the defaults. When it asks whether to test your credentials, answering y shows a permission error. This is expected; see S3 compatibility for why. Answer y again to save the configuration. s3cmd prints where it saved it, for example Configuration saved to '/home/<user>/.s3cfg'.

You can also skip the wizard and edit ~/.s3cfg directly instead:

host_base = objectstore.e2enetworks.net
host_bucket = %(bucket)s.objectstore.e2enetworks.net
access_key = <access-key>
secret_key = <secret-key>

Use in-south1-objectstore.e2enetworks.net in place of objectstore.e2enetworks.net in both host_base and host_bucket when your bucket is in Chennai.

On Windows, the same settings live in a file named s3cmd.ini in your user’s application data folder, and the wizard prints its full path when it saves. To open it in Notepad:

notepad %APPDATA%\s3cmd.ini

List a bucket’s contents (an access key cannot list every bucket on your account, so name one):

s3cmd ls s3://<bucket-name>

An empty bucket returns nothing; an object in it lists like this:

2026-01-15 09:32 0 s3://<bucket-name>/<object-name>

Upload or sync a file:

s3cmd sync <local-file> s3://<bucket-name>/

A successful sync looks like this:

upload: 'report.pdf' -> 's3://<bucket-name>/report.pdf' [1 of 1]
1258291 of 1258291 100% in 0s 3.81 MB/s done
Done. Uploaded 1258291 bytes in 0.3 seconds, 3.81 MB/s.

Run s3cmd ls s3://<bucket-name> again, and the file is in the list.

From here on, every s3cmd command reads the keys and endpoint from ~/.s3cfg, or from s3cmd.ini on Windows. For jobs that run on a schedule, see Back up a MySQL database to E2E Object Storage or Archive logs to E2E Object Storage with logrotate and s3cmd. If the credential test during setup showed a permission error, see Troubleshooting E2E Object Storage.