Part of the Timeless Stack -- Reproducible I/O. Snapshots of files, transport, content-addressing, wow.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gopath
cache
caps
cmd/rio
config
doc/dev
fs
fsOp
lib
stitch
testutil
transmat
warehouse
.gitignore
.gitmodules
CONTRIBUTING.md
LICENSE
README.md
goad
raceway.formula

README.md

rio

Repeatable I/O.

Rio is part of the Timeless Stack -- it handles packing, unpacking, syncing, copying, and hashing of Filesets.

In other words, Rio is tooling for repeatable, reproducible, filesystem I/O and transport. It's both a command line tool, and usable as a series of libraries.

(You may also want to check out Repeatr, which is the container executor in the Timeless Stack -- it uses Rio under the hood to provide snapshotting and decentralized sync of container filesystem images.)

What?

Okay, by example:

rio pack tar /tmp/something/ --target=file://output.tgz

That just created a tar pack of the files you aimed it at.

It also gave you a hash on stdout. That's a content-addressable ID of the pack you just created.

You can use that ID later to unpack things:

rio unpack tar:879UrF8j7E[...]udF57KpF8 \
   /tmp/unpackhere/ --source=file://output.tgz

It's long. That's because it's a cryptographic hash.

Why is this neat?

You can put that packed data on any server, anywhere, and fetch it again by hash. The hash makes it immutable, and reproducible, even if you don't control the storage.

Turning it up to 11

rio pack tar /tmp/something/ --target=ca+32://mybucket.s3.amazonaws.com/assets/

Same drill except... we just:

  • uploaded to a cloud storage host
  • without a specific name -- the hash is used to organize storage
  • and still got the same hash.

Now, hand that hash to someone else:

rio unpack tar:879UrF8j7E[...]udF57KpF8 \
   /tmp/unpackhere/ --source=ca+https:///mybucket.s3.amazonaws.com/assets/

They get your files. Boom. Huge amounts of data. Just one handle to copypaste: that hash.