Skip to main content

A tool to copy files between S3 buckets across AWS accounts

Project description

s3hop - Cross-account S3 bucket streaming copy

PyPI version Python Versions License: MIT Downloads

A command-line tool to efficiently copy files between S3 buckets across different AWS accounts.

Features

  • Copy files between S3 buckets across different AWS accounts
  • Smart file comparison to only copy new or updated files
  • Progress tracking with ETA and transfer speed
  • Detailed transfer summary with file type statistics
  • Handles large files and directories efficiently using streaming
  • Preserves file structure between source and destination

Quick Start

# Install
pip install s3hop

# Use
s3hop source-profile s3://source-bucket/prefix/ dest-profile s3://dest-bucket/prefix/

Installation

You can install this package directly from PyPI:

pip install s3hop

Or install from source:

git clone https://github.com/hamsti/s3hop.git
cd s3hop
pip install .

Prerequisites

  1. Python 3.6 or later
  2. AWS credentials configured for both source and destination accounts
  3. Appropriate S3 permissions in both accounts

AWS Credentials Setup

  1. Configure your AWS credentials for both accounts in ~/.aws/credentials:
[source-profile]
aws_access_key_id = YOUR_SOURCE_ACCESS_KEY
aws_secret_access_key = YOUR_SOURCE_SECRET_KEY

[dest-profile]
aws_access_key_id = YOUR_DEST_ACCESS_KEY
aws_secret_access_key = YOUR_DEST_SECRET_KEY
  1. Ensure you have the necessary S3 permissions:
    • Source bucket: s3:ListBucket, s3:GetObject
    • Destination bucket: s3:ListBucket, s3:PutObject

Usage

Basic usage:

s3hop source-profile s3://source-bucket/prefix/ dest-profile s3://dest-bucket/prefix/

Example with specific profiles and paths:

s3hop prod s3://prod-bucket/data/ staging s3://staging-bucket/backup/

Arguments

  • source-profile: AWS profile for the source account
  • source_url: Source S3 URL (s3://bucket-name/prefix/)
  • dest-profile: AWS profile for the destination account
  • dest_url: Destination S3 URL (s3://bucket-name/prefix/)

Features in Detail

  1. Smart File Comparison

    • Compares files using ETags and last modified timestamps
    • Only copies new or updated files
    • Preserves existing files that haven't changed
  2. Progress Tracking

    • Real-time transfer speed
    • Estimated time remaining
    • Progress bar with file counts
    • Total data transferred/remaining
  3. Transfer Summary

    • Start and end times
    • Duration
    • Number of files transferred/skipped
    • File type statistics
    • Failed transfers (if any)

Development

For development setup and contributing guidelines, see CONTRIBUTING.md.

Changelog

See CHANGELOG.md for a list of changes and version history.

Security

For security issues, please email security@hamsti.com instead of using the issue tracker.

Support

License

MIT License - see LICENSE for details.

Acknowledgments

  • Thanks to all contributors who have helped shape this project
  • Built with boto3
  • Progress bars powered by tqdm

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

s3hop-0.1.1.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

s3hop-0.1.1-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file s3hop-0.1.1.tar.gz.

File metadata

  • Download URL: s3hop-0.1.1.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for s3hop-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5f6f64ee650f273584cf964c051fb4ae6d0652242df94ea1e77079b15564fcb9
MD5 a0e2c60821c5ccd52ffeb90faef7c589
BLAKE2b-256 51976ce5e32611e27d846a55b98d2a15662c2dd3e2225bea6aa9252dae28f8f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for s3hop-0.1.1.tar.gz:

Publisher: publish.yml on thehamsti/s3hop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s3hop-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: s3hop-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for s3hop-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 38f6af950613babfbf5fc35758b08f3a1782ecedb7bc9d8e05d2ec38587327ae
MD5 01bf528b18a3e9c7786bd6ee4637260e
BLAKE2b-256 a6f797c4e8d8fe02e0679733d4d134d16fb6f7d11d242b96e512d9dfbb818041

See more details on using hashes here.

Provenance

The following attestation bundles were made for s3hop-0.1.1-py3-none-any.whl:

Publisher: publish.yml on thehamsti/s3hop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page