How to Install s3cmd in Linux and Manage Amazon s3 Buckets

s3cmd is a command line utility used for creating s3 buckets, uploading, retrieving and managing data to Amazon s3 storage. This article will help you to how to use install s3cmd on CentOS, RHEL and Ubuntu Systems and manage s3 buckets via command line in easy steps. To install s3cmd on windows servers read article install s3cmd in Windows.

We can also mount s3 bucket as local drive in our system using S3FS with FUSE. To configure it read next article mount s3 bucket on Linux.

amazone-s3-center-logo

How to Install s3cmd Package

s3cmd is available in default rpm repositories for CentOS,RHEL and Ubuntu systems, You can install it using simply executing following commands on your system.

On CentOS/RHEL:
# yum install s3cmd
On Ubuntu/Dabian:
$ sudo apt-get install s3cmd
On SUSE Linux Enterprise Server 11:
# zypper addrepo http://s3tools.org/repo/SLES_11/s3tools.repo
# zypper install s3cmd
Configure s3cmd Environment

In order to configure s3cmd we would required Access Key and Secret Key of your S3 Amazon account. Get these security keys from aws securityCredentials page. If will prompt to login to your amazon account.

After getting key files, use below command to configure s3cmd.

# s3cmd --configure

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3
Access Key: xxxxxxxxxxxxxxxxxxxxxx
Secret Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password: xxxxxxxxxx
Path to GPG program [/usr/bin/gpg]:

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP and can't be used if you're behind a proxy
Use HTTPS protocol [No]: Yes

New settings:
  Access Key: xxxxxxxxxxxxxxxxxxxxxx
  Secret Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  Encryption password: xxxxxxxxxx
  Path to GPG program: /usr/bin/gpg
  Use HTTPS protocol: True
  HTTP Proxy server name:
  HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n] Y
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)

Now verifying that encryption works...
Success. Encryption and decryption worked fine :-)

Save settings? [y/N] y
Configuration saved to '/root/.s3cfg'
Uses of s3cmd Command Line

Once configuration is successfully completed. Now find below command details to how to manage s3 buckets using commands.

1. Creating New Bucket

To create a new bucket in Amazon s3 use below command. It will create bucket named tecadmin in S3 account.

# s3cmd mb s3://tecadmin

Bucket 's3://tecadmin/' created
2. Uploading file in Bucket

Below command will upload file file.txt to s3 bucket using s3cmd command.

# s3cmd put file.txt s3://tecadmin/

file.txt -> s3://tecadmin/file.txt  [1 of 1]
 190216 of 190216   100% in    0s  1668.35 kB/s  done
3. Uploading Directory in Bucket

If we need to upload entire directory use -r to upload it recursively like below.

# s3cmd put -r backup s3://tecadmin/

backup/file1.txt -> s3://tecadmin/backup/file1.txt  [1 of 2]
 9984 of 9984   100% in    0s    18.78 kB/s  done
backup/file2.txt -> s3://tecadmin/backup/file2.txt  [2 of 2]
 0 of 0     0% in    0s     0.00 B/s  done

Make sure you are not adding trailing slash in upload directory named backup (eg: backup/), else it will upload only content of backup directory only.

# s3cmd put -r backup/ s3://tecadmin/

backup/file1.txt -> s3://tecadmin/file1.txt  [1 of 2]
 9984 of 9984   100% in    0s    21.78 kB/s  done
backup/file2.txt -> s3://tecadmin/file2.txt  [2 of 2]
 0 of 0     0% in    0s     0.00 B/s  done
4. List Data of S3 Bucket

List the objects of s3 bucket using ls switch with s3cmd.

# s3cmd ls s3://tecadmin/

                       DIR   s3://tecadmin/backup/
2013-09-03 10:58    190216   s3://tecadmin/file.txt
5. Download Files from Bucket

Some times if we need to download files from s3 bucket, Use following commands to download it.

# s3cmd get s3://tecadmin/file.txt

s3://tecadmin/file.txt -> ./file.txt  [1 of 1]
 4 of 4   100% in    0s    10.84 B/s  done
6. Remove Data of S3 Bucket

To remove files are folder from s3 bucket use following commands.

 Removing file from s3 bucket 
# s3cmd del s3://tecadmin/file.txt

File s3://tecadmin/file.txt deleted

 Removing directory from s3 bucket 
# s3cmd del s3://tecadmin/backup

File s3://tecadmin/backup deleted
7. Remove S3 Bucket

If we don’t need s3 bucket anymore, we can simply delete it using following command. Before removing bucket make sure its empty.

# s3cmd rb s3://tecadmin

ERROR: S3 error: 409 (BucketNotEmpty): The bucket you tried to delete is not empty

Above command failed because of s3 bucket was not empty

To remove bucket first remove all objects inside bucket and then use command again.

# s3cmd rb s3://tecadmin

Bucket 's3://tecadmin/' removed
8. List All S3 Bucket

Use following command to list all s3 buckets in your account

# s3cmd ls

Thanks for using this article. If you want to mount s3bucket in your system, you can article Mount S3bucket in Linux using s3fs.

Rahul

Founder of TecAdmin.net. I love to work with Linux and other open source application. Also I like to share knowledge with my friends and other Linux users. Follow me on Twitter, Add me on Google+ or Like Facebook page.

11 Comments

  1. Thanks, this helped but when I try to create a new bucket I get an error:
    ERROR: Bucket ‘WHATEVER already exists

    How can I fix this?

    • Hi Gabriel,

      First check if bucket “WHATEVER” already exists. If it doesn’t already exists, we recommend to use lowercase characters in bucket name like “whatever”.

      • Hi Gabriel,

        The reason you receive that error is a result of the S3 bucket name already exists. S3 bucket name must be unique (globally) on the services. So if you are trying to create a bucket called “whatever” and it exists, try creating “gabriel_whatever”

  2. Bucket name will be unique for all users. So most of the names are already being used.

  3. Manish Shrivastava Reply to Manish

    Great Help Rahul Bhai

  4. Awesome tutorial, Rahul.

    I am working on a backup solution involving Amazon S3 and Glacier, and s3cmd is exactly what I was looking for. The instructions on the original website are a bit clunky, but yours laid it out in very easy to follow instructions. Do you have a guide for getting the sync feature to work? I plan on running it with cron, if possible.

  5. Trichoplax Adhaerens Reply to Trichoplax

    Hi Rahul,

    This procedure worked like a charm. Many thanks for taking the time to share your wisdom. It is much appreciated.

    Trichoplax

  6. Very help full. Thanks for sharing with us.

    God bless you!!!

Leave a Reply