an S3 Rich Support client
- Download executable, unzip and ready to go
- rust edition 2018
- multi config (please put config files under ~/.config/s3rs
)
- interactive command line tool
- easy to debug with http protocol
- AWS4, AWS2 support
- support http redirect for multi region of AWS S3
- support automatically multipart upload
- support filters v0.2.8
- support format without protocol v0.2.9
- support command-line interface mode v0.3.0
- support s3 config file encryption function v0.4.0
- s3rs -c ~/.config/s3rs/aws2.toml -s 'the password you like' secret encrypt
- run s3rs with -s
option or use secret set <secret phrases or hexal literal>
- support multipart download
execute s3rs
will into shell mode, and execute help
, you can see the commands you can use
use config file with full path
s3rs --config=/your/s3s/config/file ls
use config file example.toml
in ~/.config/s3rs
with file name without extension
s3rs --config=example ls
| COMMAND | FUNCTION | CEPH | AWS |
|----------------------------------------------------------------------|-------------------------------------------------------------|------|-----|
| ls | list all buckets | O | O |
| ls s3://bucket | list objects in the bucket | O | O |
| ls s3://bucket/prefix | list objects match prefix in the bucket | O | O |
| ll | list all objects details (storage class, modify time, etag) | O | O |
| ll s3://bucket | list objects detail in the bucket | O | O |
| ll s3://bucket/prefix | list objects match prefix detail in the bucket | O | O |
| mb s3://bucket | create bucket | O | O |
| rb s3://bucket | delete bucket | O | O |
| put
| HIGH LEVEL COMMAND | INTEGRATE FUNCTIONS | CEPH | AWS | |--------------------|------------------------------------------------------------------------------------------|------|-----| | la | list all objects | O | O | | info s3://bucket | acl(ceph, aws), location(ceph, aws), versioning(ceph, aws), uploads(ceph), version(ceph) | O | O |
| COMMAND | FUNCTION | |---------------------|-----------------------| | usage s3://bucket | show the bucket usage |
| SHELL SETTING COMMAND | FUNCTION | |-------------------------------|------------------------------------------| | s3_type [ceph/aws/aws4/aws2] | change setting for different S3 provider | | format [xml/json] | change the format client request | | log [trace/debug/info/erro] | change the log level | | | - Info : for Http header and body | | | - debug: for auth signature hash info | | | - trace: more detail about rust | | logout | logout and reselect user | | Ctrl + d | logout and reselect user |
| S3 TYPE | AUTH TYPE | FORMAT | URL STYLE | |---------|-----------|--------|----------------------| | ceph | aws4 | json | path-style | | aws | aws4 | xml | virtual-hosted–style |
| Talks | Link | |------------|--------------------------------------------------------| | COSCon'19 | Slides |
Install rust tools rustup and cargo
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Additional package for ubuntu
- apt-get install libssl-dev pkg-config openssl
It is easy to install s3rs via cargo as following command.
- cargo install s3rs
Set up the path for rust binnary
- export PATH=$PATH:~/.cargo/bin
The config file will auto setup when binary first time launch
- s3rs
Edit the config file at ~/.s3rs.toml
- vi ~/.s3rs.toml
Install rust tools rustup and cargo
- curl https://sh.rustup.rs -sSf | sh
- git clone https://github.com/yanganto/s3rs.git
- cargo test
- cargo build
- The executable binary will in ./target/debug/s3rs