Skip to content

LinPr/s6cmd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

s6cmd

Release Go Version License

s6cmd is stiall under developing, please do not use it in your production environment.

s6cmd is a command-line tool for Amazon S3, using aws-sdk-go-v2, since the aws has announced the aws-sdk-go is deprecated. It's inspired by the popular s3cmd tool and aims to provide similar functionality with improved performance and modern Go architecture.

Features

s6cmd currently supports the following S3 operations:

  • Bucket Operations

    • mb - Make bucket (create S3 bucket)
    • rb - Remove bucket (delete S3 bucket)
    • ls - List buckets and objects
  • Object Operations

    • put - Upload files to S3
    • get - Download files from S3
    • cp - Copy objects within S3
    • mv - Move/rename objects in S3
    • rm - Remove objects from S3
    • stat - Display object metadata
    • du - Display disk usage for objects

Installation

Download Pre-built Binaries

Download the latest release for your platform from the releases page:

# Linux AMD64
wget https://github.com/LinPr/s6cmd/releases/latest/download/s6cmd-linux-amd64
chmod +x s6cmd-linux-amd64
sudo mv s6cmd-linux-amd64 /usr/local/bin/s6cmd

# macOS ARM64 (Apple Silicon)
wget https://github.com/LinPr/s6cmd/releases/latest/download/s6cmd-darwin-arm64
chmod +x s6cmd-darwin-arm64
sudo mv s6cmd-darwin-arm64 /usr/local/bin/s6cmd

Build from Source

git clone https://github.com/LinPr/s6cmd.git
cd s6cmd
go build -o s6cmd .

Configuration

s6cmd uses AWS credentials and configuration, similar to the AWS CLI. You can configure it using:

Environment Variables

export export AWS_ENDPOINT_URL_S3=your-object-storage-service-endpoint
export AWS_ACCESS_KEY_ID=your-access-key
export AWS_SECRET_ACCESS_KEY=your-secret-key
export AWS_REGION=your-object-storage-region

AWS Credentials File

aws configure

Configuration File

Create a configuration file at config/s6cmd.yaml:

Usage

Basic Examples

# List all buckets
s6cmd ls

# List objects in a bucket
s6cmd ls s3://my-bucket/

# Upload a file
s6cmd put local-file.txt s3://my-bucket/remote-file.txt

# Download a file
s6cmd get s3://my-bucket/remote-file.txt local-file.txt

# Copy objects within S3
s6cmd cp s3://source-bucket/file.txt s3://dest-bucket/file.txt

# Sync local directory with S3
s6cmd sync ./local-dir/ s3://my-bucket/prefix/

# Display bucket structure
s6cmd tree s3://my-bucket/

# Create a new bucket
s6cmd mb s3://my-new-bucket

# Remove objects
s6cmd rm s3://my-bucket/file.txt

# Show object statistics
s6cmd stat s3://my-bucket/file.txt

Global Flags

# Dry run mode (show what would be done without executing)
s6cmd put -n local-file.txt s3://my-bucket/file.txt

# Get help for any command
s6cmd help
s6cmd put --help

Architecture

s6cmd is built using:

Development Status

s6cmd is actively under development. While it already provides essential S3 operations, we're continuously adding new features and improvements.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

About

The s6cmd is an alternative to s3cmd, developed with aws-go-sdk-v2.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages