How to export your data from Amazon S3
S3 doesn't have a single 'export' button for a whole bucket — you download objects individually via the console, or in bulk using the AWS CLI (`aws s3 cp --recursive` or `aws s3 sync`), AWS CloudShell, or the SDKs/REST API. There's no proprietary format: you get back the original files exactly as stored, in their native formats (images, JSON, CSV, logs, etc.).
✓ Verified against Amazon S3's official documentation, October 2026
Step by step
- 1Sign in to the AWS Management Console and open the S3 console at console.aws.amazon.com/s3/
- 2In the left navigation pane, choose General purpose buckets (or Directory buckets), then select the bucket you want to export from
- 3For a single file: select the checkbox next to the object and choose Download (or Actions > Download as for a specific folder); note the console only lets you download one object at a time
- 4For bulk export, use AWS CloudShell or the AWS CLI instead: run `aws s3 cp s3://your-bucket . --recursive` to copy all objects to your current directory, or `aws s3 sync s3://your-bucket ./local-folder` to mirror the bucket locally
- 5To export only part of a bucket, add filters, e.g. `aws s3 cp s3://your-bucket/logs/ . --recursive --exclude "*" --include "*.log"`
- 6If using CloudShell, after syncing objects to the temp folder, zip them with `zip temp.zip -r temp/`, then use Actions > Download file to pull the zip to your machine (CloudShell storage is capped at 1GB per Region)
- 7If any objects are archived (Glacier storage classes), restore them first via the console, S3 Batch Operations, CLI, or SDK before they can be downloaded
- 8For sharing access without AWS credentials, generate a presigned URL from Object actions > Share with a presigned URL (console-generated URLs expire after a maximum of 12 hours)
What the export includes
- ✓All object data/content exactly as stored, in original file formats
- ✓Specific byte ranges of an object (via Range header) if you only need part of a large file
- ✓Objects from another AWS account if the owner shares a presigned URL
- ✓Archived (Glacier) objects, once restored
What it doesn't include
- ✗Bucket configuration, IAM policies, bucket policies, lifecycle rules, or replication settings (not part of an object download)
- ✗Object tags and most custom metadata are not preserved automatically in a simple CLI copy to another provider unless explicitly handled
- ✗Deleted object versions unless you enable Show versions and download each version individually
- ✗A single packaged 'export file' for the whole bucket — there is no built-in zip/archive export feature in the console itself
Before you start
- ⚠The S3 console can only download one object at a time; bulk download requires CLI, SDK, or CloudShell
- ⚠Each single GET request is capped at 5 TB; for larger objects you must use ranged/parallel GET requests or the S3 Transfer Manager
- ⚠Archived objects (Glacier storage classes) must be restored before they can be downloaded, which can take minutes to hours depending on storage class
- ⚠AWS CloudShell home directory storage is limited to 1GB per AWS Region, so syncing very large buckets there won't work
- ⚠Data-transfer-out fees apply when downloading objects outside the AWS network; transfers within the same Region are free but GET requests are still billed
- ⚠The sync command is not compatible with directory buckets
- ⚠If a key name ends in a period, downloading via the console strips the trailing period — use CLI/SDK/REST API to preserve it exactly
Where to take your data
Free and cheaper tools that can take a Amazon S3 export. See all Amazon S3 alternatives →
Backblaze B2
Use `aws s3 sync` to pull objects locally, then upload to B2 with the B2 CLI/`rclone`, or use B2's S3-compatible API with a tool like `rclone sync` directly bucket-to-bucket without a local hop.
Cloudflare R2
R2 is S3-API-compatible, so you can use `rclone` or the AWS CLI itself (pointed at R2's S3-compatible endpoint) to sync objects directly from your S3 bucket to an R2 bucket.
Wasabi
Wasabi also exposes an S3-compatible API — configure a second AWS CLI profile or `rclone` remote pointing at Wasabi's endpoint and run a bucket-to-bucket sync.
Exporting from Amazon S3: common questions
Can I export my whole S3 bucket in one click from the console?+
No. The S3 console only supports downloading one object at a time. For a full bucket export you need the AWS CLI (`aws s3 cp --recursive` or `aws s3 sync`), AWS CloudShell, or an SDK/REST API script.
Will exporting from S3 cost me anything?+
Yes, if you download outside the AWS network. Data transfer within the same AWS Region is free, but you're billed for GET requests and for data transferred out to the internet.
What format will my files be in after export?+
Objects are returned in their original, native format exactly as they were uploaded — S3 does not convert or repackage them into a special export format.
How do I export objects that are in Glacier/archive storage classes?+
You must restore them first (via the console, S3 Batch Operations, CLI, or SDK), which can take minutes to hours depending on the storage class, and only then can you download them.
Can someone without AWS credentials download my S3 objects?+
Yes, by using a presigned URL you generate from the object's Share with a presigned URL action; console-generated URLs expire after a maximum of 12 hours.
Does `aws s3 sync` preserve object metadata and tags when I copy to another cloud provider?+
A plain sync copies object content and basic properties, but tags and custom metadata require extra handling — they are not automatically carried over by a simple bucket-to-bucket CLI sync between different providers.
Sources
This guide was written from Amazon S3's own documentation and checked against it in October 2026. If a step has changed, the official page wins.
Amazon S3 head-to-head
More Dev Tools tools people are leaving
All Dev Tools alternatives →What would you save without Amazon S3?
Pick your team size and see the yearly number.