gosync is a super simple command line program for synchronizing a source and destination, including AWS S3 buckets. gosync synchronizes regular files and will create directories as needed if the parents flag is set. gosync supports the following operating systems and architectures.
The following platforms are supported. Pull requests to support other platforms are welcome!
GOOS | GOARCH |
---|---|
darwin | amd64 |
linux | amd64 |
windows | amd64 |
linux | arm64 |
Find releases at https://github.com/spatialcurrent/gosync/releases. See the Building section below to build from scratch.
Darwin
gosync_darwin_amd64
- CLI for Darwin on amd64 (includesmacOS
andiOS
platforms)
FreeBSD
gosync_freebsd_386
- CLI for FreeBSD on 386gosync_freebsd_amd64
- CLI for FreeBSD on amd64gosync_freebsd_arm
- CLI for FreeBSD on arm
Linux
gosync_linux_386
- CLI for Linux on 386gosync_linux_amd64
- CLI for Linux on amd64gosync_linux_arm
- CLI for Linux on armgosync_linux_arm64
- CLI for Linux on arm64
OpenBSD
gosync_openbsd_386
- CLI for OpenBSD on 386gosync_openbsd_amd64
- CLI for OpenBSD on amd64
Solaris
gosync_solaris_amd64
- CLI for Solaris on amd64
Windows
gosync_windows_386.exe
- CLI for Windows on 386gosync_windows_amd64.exe
- CLI for Windows on amd64
See the usage below or the following examples.
gosyc is a super simple command line program for synchronizing two directories specified by URI. gosync currently supports local directories and AWS S3 buckets as a source or destination. AWS S3 buckets are specified using the "s3://" scheme. Local files are specified using the "file://" scheme or a path without a scheme. gosync synchronizes regular files and will create directories as needed if the parents flag is set.
Usage:
gosync SOURCE DESTINATION
Flags:
--aws-assume-role-duration duration Expiry duration of the STS credentials for assuming a role. (default 15m0s)
--aws-default-region string AWS Default Region
--aws-iterator-max-keys int maximum number of keys returned when listing objects in AWS S3 (default 1000)
--aws-mfa-serial string AWS MFA Serial
--aws-region string AWS Region (overrides default region)
--aws-role-arn string AWS Role ARN
-h, --help help for gosync
-l, --limit int limit number of files copied (default -1)
-p, --parents create parent directories of destination if they do not exist
-s, --pool-size int pool size (number of concurrent downloads or uploads) (default 1)
-e, --stop-on-error stop copying file if there is an error copying any of them
-t, --timeout duration maximum duration for copying an individual file before aborting
-v, --verbose verbose output
--version show version
Sync Local Directories
gosync /path/to/source/dir /path/to/destination/dir
Upload to AWS S3
gosync
can upload a series of files to an AWS S3 bucket with a given prefix.
gosync file://path/to/local/dir s3://bucket/key/prefix
Download to AWS S3
gosync
can download a series of files from AWS S3 to a local directory.
gosync s3://bucket/key/prefix file://path/to/local/dir
Use make help
to see help information for each target.
CLI
Use make build_cli
to build executables for Linux and Windows. Use make install
for standard installation as a go executable.
CLI
To run CLI testes use make test_cli
, which uses shUnit2. If you recive a shunit2:FATAL Please declare TMPDIR with path on partition with exec permission.
error, you can modify the TMPDIR
environment variable in line or with export TMPDIR=<YOUR TEMP DIRECTORY HERE>
. For example:
TMPDIR="/usr/local/tmp" make test_cli
Go
To run Go tests use make test_go
(or bash scripts/test.sh
), which runs unit tests, go vet
, go vet with shadow
, errcheck, ineffassign, staticcheck, and misspell.
Spatial Current, Inc. is currently accepting pull requests for this repository. We'd love to have your contributions! Please see Contributing.md for how to get started.
This work is distributed under the MIT License. See LICENSE file.