thorp/README.org
2019-06-11 23:36:08 +01:00

53 lines
2.2 KiB
Org Mode

* s3thorp
Synchronisation of files with S3 using the hash of the file contents.
[[https://www.codacy.com/app/kemitix/s3thorp][file:https://img.shields.io/codacy/grade/14ea6ad0825249c994a27a82d3485180.svg?style=for-the-badge]]
Originally based on Alex Kudlick's [[https://github.com/akud/aws-s3-sync-by-hash][aws-s3-sync-by-hash]].
The normal ~aws s3 sync ...~ command only uses the time stamp of files
to decide what files need to be copied. This utility looks at the md5
hash of the file contents.
* Usage
#+begin_example
s3thorp
Usage: s3thorp [options]
-s, --source <value> Source directory to sync to S3
-b, --bucket <value> S3 bucket name
-p, --prefix <value> Prefix within the S3 Bucket
-i, --include <value> Include matching paths
-x, --exclude <value> Exclude matching paths
-v, --verbose <value> Verbosity level (1-5)
#+end_example
The ~--include~ and ~--exclude~ parameters can be used more than once.
* Behaviour
When considering a local file, the following table governs what should happen:
|---+------------+------------+------------------+--------------------+---------------------|
| # | local file | remote key | hash of same key | hash of other keys | action |
|---+------------+------------+------------------+--------------------+---------------------|
| 1 | exists | exists | matches | - | do nothing |
| 2 | exists | is missing | - | matches | copy from other key |
| 3 | exists | is missing | - | no matches | upload |
| 4 | exists | exists | no match | matches | copy from other key |
| 5 | exists | exists | no match | no matches | upload |
| 6 | is missing | exists | - | - | delete |
|---+------------+------------+------------------+--------------------+---------------------|
* Executable JAR
To build as an executable jar, perform `sbt assembly`
This will create the file
`cli/target/scala-2.12/s3thorp-assembly-$VERSION.jar` (where $VERSION
is substituted)
Copy and rename this file as `s3thorp.jar` into the same directory as
the `bin/s3throp` shell script.