A secure and easy way to sync local files with AWS s3
Ruby Shell
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is even with s2t2:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
lib
spec
.gitignore
.rspec
.travis.yml
CREDITS.md
Gemfile
LICENSE.txt
README.md
Rakefile
s3_sync.gemspec

README.md

s3_sync

Gem Version

Securely sync (upload and download) files with Amazon Simple Storage Service (s3).

Specify credentials, file names, and other options during configuration.

Installation

Add this line to your application's Gemfile:

gem 's3_sync'

And then execute:

$ bundle

Or install it yourself as:

$ gem install s3_sync

Prerequisites

Create an AWS Identity and Access Management (IAM) user.

Note: the s3 user's Access Key Id and Secret Access Key

Create an AWS IAM policy with the permissions:

arn:aws:iam::aws:policy/AmazonS3FullAccess

Create an AWS IAM group, add the user to the group, and attach the policy to the group.

Usage

Configuring

Use the same options when uploading and downloading.

S3Sync.configure do |config|
  config.key_id = "mykey123"
  config.key_secret = "mysecret456"
  config.region = "us-east-1"
  config.bucket = "s3-uploads"
  config.secret_phrase = "supersecret"
  config.files = [
    File.join(Dir.home,".gitconfig"),
    File.join(Dir.home,".ssh","config")
  ]
  config.downloads_dir = File.join(Dir.home,"Desktop","s3-downloads")
end

Configuration Options

attribute name description
key_id The s3 user's Access Key Id.
key_secret The s3 user's Access Key Secret.
region The s3 region.
bucket The s3 bucket (top-level directory) name.
secret_phrase The phrase to use when encrypting and decrypting files.
files A list of local file paths to be synced.
downloads_dir A staging directory to house downloaded files. Defaults to ~Desktop/s3-downloads.

Uploading

Upload files from your computer to s3.

S3Sync::Upload.new

The uploads bucket gets created automatically, and can be configured with config.bucket.

Downloading

Download files from s3 to your computer.

S3Sync::Download.new

Files are downloaded to a staging directory, which can be configured with config.downloads_dir. The staging directory helps mitigate the risk of accidentally over-writing local files.

Contributing

Browse existing issues or create a new issue to communicate bugs, desired features, etc.

After forking the repo and pushing your changes, create a pull request referencing the applicable issue(s).

Installation

Check out the repo with git clone git@github.com:s2t2/s3-sync-ruby.git, and cd s3-sync-ruby.

After checking out the repo, run bin/setup to install dependencies.

Testing

Run bundle exec rake or bundle exec rspec spec/ to run the tests.

You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install.

Releasing

Update the version number in version.rb, then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.