Juicesync is a tool to move your data in object storage between any clouds or regions, also support local file, sftp and HDFS.
# How it works?
Juicesync will scan all the keys from two object stores, and comparing them in ascending order to find out missing or outdated keys, then download them from the source and upload them to the destination in parallel.
# Install
## With Homebrew
```sh
brew install juicedata/tap/juicesync
```
## Download binary release
From [here](https://github.com/juicedata/juicesync/releases)
# Develop
We use go mod to manage modules, if not sure how to use this, refer to [The official document](https://github.com/golang/go/wiki/Modules).
* If you're using Go 1.13
```
go build
```
* If you're using Go >= 1.11, < 1.13
```
export GO111MODULE=on
go build
```
# Upgrade
* Use Homebrew to upgrade or
* Download a new version from [release page](https://github.com/juicedata/juicesync/releases)
# Usage
```
$ juicesync -h
NAME:
juicesync - rsync for cloud storage
USAGE:
juicesync [options] SRC DST
SRC and DST should be [NAME://][ACCESS_KEY:SECRET_KEY@]BUCKET[.ENDPOINT][/PREFIX]
VERSION:
v0.5.0-1-gce9968c
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--start KEY, -s KEY the first KEY to sync
--end KEY, -e KEY the last KEY to sync
--threads value, -p value number of concurrent threads (default: 10)
--http-port PORT HTTP PORT to listen to (default: 6070)
--update, -u update existing file if the source is newer (default: false)