s3_sync 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +28 -27
- data/lib/s3_sync/download.rb +8 -2
- data/lib/s3_sync/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc3c1920c162355ad15e7b29de184b776ac52999
|
4
|
+
data.tar.gz: 564e722b8995182f5b129f5b550bc5c2d92d9d8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfd1b6a2d0eab241969d67a66d8f28089664fb5f9b1f0251b2db5fcb9973589f34f7c6a1a217208f62ee1ff75256283cbe71438193d194ca658a7a627f117302
|
7
|
+
data.tar.gz: 0438f6981de67c83cf52c45625f81243be6fec49c69f3fca31f4d9cc527ea54f7145a049225019e6f14f624e0d03984addf861f8fdd3879260bde727bdd69b38
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# s3_sync
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/s3_sync.svg)](http://badge.fury.io/rb/s3_sync)
|
4
|
+
|
3
5
|
Securely sync (upload and download) files with [Amazon Simple Storage Service (s3)](http://aws.amazon.com/s3).
|
4
6
|
|
5
7
|
Specify credentials, file names, and other options during configuration.
|
@@ -20,39 +22,50 @@ Or install it yourself as:
|
|
20
22
|
|
21
23
|
$ gem install s3_sync
|
22
24
|
|
25
|
+
## Prerequisites
|
26
|
+
|
27
|
+
Create an [AWS Identity and Access Management (IAM)](http://aws.amazon.com/iam/) user.
|
28
|
+
|
29
|
+
> Note: the s3 user's *Access Key Id* and *Secret Access Key*
|
30
|
+
|
31
|
+
Create an AWS IAM policy with the permissions:
|
32
|
+
|
33
|
+
arn:aws:iam::aws:policy/AmazonS3FullAccess
|
34
|
+
|
35
|
+
Create an AWS IAM group, add the user to the group, and attach the policy to the group.
|
36
|
+
|
23
37
|
## Usage
|
24
38
|
|
25
39
|
### Configuring
|
26
40
|
|
27
|
-
|
41
|
+
Use the same options when uploading and downloading.
|
28
42
|
|
29
43
|
```` rb
|
30
44
|
S3Sync.configure do |config|
|
31
45
|
config.key_id = "mykey123"
|
32
|
-
config.key_secret = "
|
46
|
+
config.key_secret = "mysecret456"
|
33
47
|
config.region = "us-east-1"
|
34
|
-
config.bucket = "
|
35
|
-
config.secret_phrase = "
|
48
|
+
config.bucket = "s3-uploads"
|
49
|
+
config.secret_phrase = "supersecret"
|
36
50
|
config.files = [
|
37
|
-
File.join(Dir.home,".bash_profile"),
|
38
51
|
File.join(Dir.home,".gitconfig"),
|
39
52
|
File.join(Dir.home,".ssh","config")
|
40
53
|
]
|
41
|
-
config.downloads_dir = File.join(Dir.home,"Desktop","
|
54
|
+
config.downloads_dir = File.join(Dir.home,"Desktop","s3-downloads")
|
42
55
|
end
|
43
56
|
````
|
44
57
|
|
45
58
|
#### Configuration Options
|
46
59
|
|
47
|
-
attribute name | description
|
48
|
-
--- | ---
|
49
|
-
`key_id` | The s3 user's *Access Key Id*.
|
50
|
-
`key_secret` | The s3 user's *Access Key Secret*.
|
51
|
-
`region` | The s3 region.
|
52
|
-
`bucket` | The s3 bucket (top-level directory) name.
|
53
|
-
`secret_phrase` | The phrase to use when encrypting and decrypting files.
|
54
|
-
`files` | A list of local file paths to be synced.
|
55
|
-
`downloads_dir` | A staging directory to house downloaded files.
|
60
|
+
attribute name | description
|
61
|
+
--- | ---
|
62
|
+
`key_id` | The s3 user's *Access Key Id*.
|
63
|
+
`key_secret` | The s3 user's *Access Key Secret*.
|
64
|
+
`region` | The s3 region.
|
65
|
+
`bucket` | The s3 bucket (top-level directory) name.
|
66
|
+
`secret_phrase` | The phrase to use when encrypting and decrypting files.
|
67
|
+
`files` | A list of local file paths to be synced.
|
68
|
+
`downloads_dir` | A staging directory to house downloaded files. Defaults to *~Desktop/s3-downloads*.
|
56
69
|
|
57
70
|
### Uploading
|
58
71
|
|
@@ -74,18 +87,6 @@ S3Sync::Download.new
|
|
74
87
|
|
75
88
|
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.
|
76
89
|
|
77
|
-
## Prerequisites
|
78
|
-
|
79
|
-
Create an [AWS Identity and Access Management (IAM)](http://aws.amazon.com/iam/) user and obtain its *Access Key Id* and *Secret Access Key*.
|
80
|
-
|
81
|
-
Create an AWS IAM group.
|
82
|
-
|
83
|
-
Create an AWS IAM policy with the *arn:aws:iam::aws:policy/AmazonS3FullAccess* permission set.
|
84
|
-
|
85
|
-
Attach the policy to the group.
|
86
|
-
|
87
|
-
Add the user to the group.
|
88
|
-
|
89
90
|
## Contributing
|
90
91
|
|
91
92
|
Browse [existing issues](https://github.com/s2t2/s3-sync-ruby/issues) or create a [new issue](https://github.com/s2t2/s3-sync-ruby/issues/new) to communicate bugs, desired features, etc.
|
data/lib/s3_sync/download.rb
CHANGED
@@ -19,10 +19,16 @@ module S3Sync
|
|
19
19
|
|
20
20
|
object_keys = []
|
21
21
|
objects = client.list_objects(:bucket => @bucket)
|
22
|
-
|
22
|
+
|
23
|
+
if objects.next_page?
|
24
|
+
while objects.last_page? == false
|
25
|
+
object_keys << objects.contents.map{|obj| obj.key}
|
26
|
+
objects = objects.next_page
|
27
|
+
end
|
28
|
+
else
|
23
29
|
object_keys << objects.contents.map{|obj| obj.key}
|
24
|
-
objects = objects.next_page
|
25
30
|
end
|
31
|
+
|
26
32
|
object_directories = object_keys.flatten.map{|str| str.split("/").first}.compact.uniq
|
27
33
|
days = object_directories.map{|str| Date.parse(str) rescue nil}.compact
|
28
34
|
latest_day = days.max.to_s
|
data/lib/s3_sync/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: s3_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MJ Rossetti (@s2t2)
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|