AWS S3 utility written in rust.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
packages
src
.editorconfig
.gitignore
.gitmodules
Cargo.lock
Cargo.toml
LICENSE.txt
README.md
gen_docs.sh
rustfmt.toml

README.md

S3lsio

s3lsio Crates.io Crates.io

Cloning and Committing PRs

git clone --recursive https://github.com/lambdastackio/s3lsio.git

Do the above command instead of the normal git clone ... since there is a submodule for the OSX package manager Homebrew. However, if you don't care about that then you can simply leave --recursive off and git clone as normal.

Installing

If you only want to install s3lsio then pick from your environment below:

OSX (Homebrew)

The brew tap command below is important to setup where Homebrew will look for the package and updates.

brew tap lambdastackio/tap

brew install s3lsio

Linux RPMs - (replace 0.1.18 with latest version)

wget https://s3.amazonaws.com/s3lsio/osx/s3lsio-0.1.18.tar.gz

tar -xzvf s3lsio-0.1.18.tar.gz

sudo rpm -Uvh s3lsio-0.1.18.rpm

If you have Rust installed and want to use cargo

cargo install s3lsio

To install Rust (if needed): (Linux and Mac) curl -sSf https://static.rust-lang.org/rustup.sh | sh (Windows) Here is the link to the official Rust downloads page: https://www.rust-lang.org/en-US/downloads.html

About

AWS S3 command line utility written in rust. Works with both V2 and V4 signatures. This is important when working with third party systems that implement an S3 interface like Ceph. Ceph Hammer and below use V2 while Jewel and higher use V4.

Design

Simple as possible but flexible enough to be used in cron jobs, every day utility use, scripts etc. Additional AWS type storage options are coming soon.

Packaging

Deb/RPM - EVR (Epoch.Version.Release) - Follow semantic versioning which is now standard. Currently, you have to maintain the versioning information on packages, Cargo.toml and CLI which is a pain because you will often forget to properly update each of those. The CLI is now reading from the toml file but the others are not. So, an effort will soon be underway in a build.rs process to dynamically update those to match the Cargo.toml file before building begins to keep everything in sync.

OSX: A git submodule exists to the homebrew-tap repo in lambdastackio. This will create an updated tarball that Homebrew uses to install and update packages.

Linux (RHEL/CentOS/Fedora): A Vagrantfile exists to dynamically pull down a VirtualBox instance and spin up the correct OS to pull down the github code, install Rust, build the code, build the rpms and push them to S3.

Linux Ubuntu: A Vagrantfile exists to dynamically pull down a VirtualBox instance and spin up the correct OS to pull down the github code, install Rust, build the code, build the debs and push them to S3.

The above process will most likely move to Docker soon.

NB. Once this process is fully baked it will be rolled out as a template process for all binary crates moving forward. It's possible that I may auto codegen a Pacman package file to be used in Windows MinGW-64bit.

Changes

There are a lot of changes happening at a rapid rate. What may not be there today may very well be there tomorrow.