mgreenly-s3sync 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc ADDED
@@ -0,0 +1,11 @@
1
+ = Welcome
2
+
3
+ This is a shallow fork of the real s3sync[http://s3sync.net/wiki] project. I created
4
+ it mostly because I wanted to wrap s3sync in a gem but also because I do intend to
5
+ hack on it.
6
+
7
+ = License
8
+
9
+ The original files were distributed under a bastardized (MIT like) open source licenses.
10
+ If that matters to you, look through the original code. Any additional work I contribute
11
+ will be provided via an MIT style license.
data/Rakefile ADDED
@@ -0,0 +1,35 @@
1
+ require 'rake/testtask'
2
+ require 'rake/packagetask'
3
+ require 'rake/gempackagetask'
4
+ require 'rake/rdoctask'
5
+
6
+ PKG_NAME = "s3sync"
7
+
8
+ PKG_VERSION = "1.2.4"
9
+
10
+ gemspec = eval(File.read("s3sync.gemspec"))
11
+
12
+
13
+ task :default => [:package]
14
+
15
+ Rake::TestTask.new do |t|
16
+ t.libs << "test"
17
+ t.test_files = FileList['test/*_test.rb']
18
+ t.verbose = true
19
+ end
20
+
21
+ Rake::GemPackageTask.new(gemspec) do |pkg|
22
+ pkg.need_zip = true
23
+ pkg.need_tar = true
24
+ end
25
+
26
+ Rake::RDocTask.new do |rd|
27
+ rd.main = "README.rdoc"
28
+ rd.options << "--line-numbers"
29
+ rd.options << "--inline-source"
30
+ rd.options << "--all"
31
+ rd.rdoc_files.include( "README.rdoc", "lib/**/*.rb" )
32
+ rd.rdoc_dir = "doc"
33
+ end
34
+
35
+
data/bin/s3cmd ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 's3sync/s3cmd'
data/bin/s3sync ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 's3sync/s3sync'
@@ -0,0 +1,387 @@
1
+ = Welcome
2
+
3
+ This is a shallow fork of the real s3sync[http://s3sync.net/wiki] project. I created
4
+ it mostly because I wanted to wrap s3sync in a gem but also because I do intend to
5
+ hack on it.
6
+
7
+ = Original Readme
8
+
9
+
10
+ Welcome to s3sync.rb
11
+ --------------------
12
+ Home page, wiki, forum, bug reports, etc: http://s3sync.net
13
+
14
+ This is a ruby program that easily transfers directories between a local
15
+ directory and an S3 bucket:prefix. It behaves somewhat, but not precisely, like
16
+ the rsync program. In particular, it shares rsync's peculiar behavior that
17
+ trailing slashes on the source side are meaningful. See examples below.
18
+
19
+ One benefit over some other comparable tools is that s3sync goes out of its way
20
+ to mirror the directory structure on S3. Meaning you don't *need* to use s3sync
21
+ later in order to view your files on S3. You can just as easily use an S3
22
+ shell, a web browser (if you used the --public-read option), etc. Note that
23
+ s3sync is NOT necessarily going to be able to read files you uploaded via some
24
+ other tool. This includes things uploaded with the old perl version! For best
25
+ results, start fresh!
26
+
27
+ s3sync runs happily on linux, probably other *ix, and also Windows (except that
28
+ symlinks and permissions management features don't do anything on Windows). If
29
+ you get it running somewhere interesting let me know (see below)
30
+
31
+ s3sync is free, and license terms are included in all the source files. If you
32
+ decide to make it better, or find bugs, please let me know.
33
+
34
+ The original inspiration for this tool is the perl script by the same name which
35
+ was made by Thorsten von Eicken (and later updated by me). This ruby program
36
+ does not share any components or logic from that utility; the only relation is
37
+ that it performs a similar task.
38
+
39
+
40
+ Examples:
41
+ ---------
42
+ (using S3 bucket 'mybucket' and prefix 'pre')
43
+ Put the local etc directory itself into S3
44
+ s3sync.rb -r /etc mybucket:pre
45
+ (This will yield S3 keys named pre/etc/...)
46
+ Put the contents of the local /etc dir into S3, rename dir:
47
+ s3sync.rb -r /etc/ mybucket:pre/etcbackup
48
+ (This will yield S3 keys named pre/etcbackup/...)
49
+ Put contents of S3 "directory" etc into local dir
50
+ s3sync.rb -r mybucket:pre/etc/ /root/etcrestore
51
+ (This will yield local files at /root/etcrestore/...)
52
+ Put the contents of S3 "directory" etc into a local dir named etc
53
+ s3sync.rb -r mybucket:pre/etc /root
54
+ (This will yield local files at /root/etc/...)
55
+ Put S3 nodes under the key pre/etc/ to the local dir etcrestore
56
+ **and create local dirs even if S3 side lacks dir nodes**
57
+ s3sync.rb -r --make-dirs mybucket:pre/etc/ /root/etcrestore
58
+ (This will yield local files at /root/etcrestore/...)
59
+
60
+
61
+ Prerequisites:
62
+ --------------
63
+ You need a functioning Ruby (>=1.8.4) installation, as well as the OpenSSL ruby
64
+ library (which may or may not come with your ruby).
65
+
66
+ How you get these items working on your system is really not any of my
67
+ business, but you might find the following things helpful. If you're using
68
+ Windows, the ruby site has a useful "one click installer" (although it takes
69
+ more clicks than that, really). On debian (and ubuntu, and other debian-like
70
+ things), there are apt packages available for ruby and the open ssl lib.
71
+
72
+
73
+ Your environment:
74
+ -----------------
75
+ s3sync needs to know several interesting values to work right. It looks for
76
+ them in the following environment variables -or- a s3config.yml file.
77
+ In the yml case, the names need to be lowercase (see example file).
78
+ Furthermore, the yml is searched for in the following locations, in order:
79
+ $S3CONF/s3config.yml
80
+ $HOME/.s3conf/s3config.yml
81
+ /etc/s3conf/s3config.yml
82
+
83
+ Required:
84
+ AWS_ACCESS_KEY_ID
85
+ AWS_SECRET_ACCESS_KEY
86
+
87
+ If you don't know what these are, then s3sync is probably not the
88
+ right tool for you to be starting out with.
89
+ Optional:
90
+ AWS_S3_HOST - I don't see why the default would ever be wrong
91
+ HTTP_PROXY_HOST,HTTP_PROXY_PORT,HTTP_PROXY_USER,HTTP_PROXY_PASSWORD - proxy
92
+ SSL_CERT_DIR - Where your Cert Authority keys live; for verification
93
+ SSL_CERT_FILE - If you have just one PEM file for CA verification
94
+ S3SYNC_RETRIES - How many HTTP errors to tolerate before exiting
95
+ S3SYNC_WAITONERROR - How many seconds to wait after an http error
96
+ S3SYNC_MIME_TYPES_FILE - Where is your mime.types file
97
+ S3SYNC_NATIVE_CHARSET - For example Windows-1252. Defaults to ISO-8859-1.
98
+ AWS_CALLING_FORMAT - Defaults to REGULAR
99
+ REGULAR # http://s3.amazonaws.com/bucket/key
100
+ SUBDOMAIN # http://bucket.s3.amazonaws.com/key
101
+ VANITY # http://<vanity_domain>/key
102
+
103
+ Important: For EU-located buckets you should set the calling format to SUBDOMAIN
104
+ Important: For US buckets with CAPS or other weird traits set the calling format
105
+ to REGULAR
106
+
107
+ I use "envdir" from the daemontools package to set up my env
108
+ variables easily: http://cr.yp.to/daemontools/envdir.html
109
+ For example:
110
+ envdir /root/s3sync/env /root/s3sync/s3sync.rb -etc etc etc
111
+ I know there are other similar tools out there as well.
112
+
113
+ You can also just call it in a shell script where you have exported the vars
114
+ first such as:
115
+ #!/bin/bash
116
+ export AWS_ACCESS_KEY_ID=valueGoesHere
117
+ ...
118
+ s3sync.rb -etc etc etc
119
+
120
+ But by far the easiest (and newest) way to set this up is to put the name:value
121
+ pairs in a file named s3config.yml and let the yaml parser pick them up. There
122
+ is an .example file shipped with the tar.gz to show what a yaml file looks like.
123
+ Thanks to Alastair Brunton for this addition.
124
+
125
+ You can also use some combination of .yaml and environment variables, if you
126
+ want. Go nuts.
127
+
128
+
129
+ Management tasks
130
+ ----------------
131
+ For low-level S3 operations not encapsulated by the sync paradigm, try the
132
+ companion utility s3cmd.rb. See README_s3cmd.txt.
133
+
134
+
135
+ About single files
136
+ ------------------
137
+ s3sync lacks the special case code that would be needed in order to handle a
138
+ source/dest that's a single file. This isn't one of the supported use cases so
139
+ don't expect it to work. You can use the companion utility s3cmd.rb for single
140
+ get/puts.
141
+
142
+
143
+ About Directories, the bane of any S3 sync-er
144
+ ---------------------------------------------
145
+ In S3 there's no actual concept of folders, just keys and nodes. So, every tool
146
+ uses its own proprietary way of storing dir info (my scheme being the best
147
+ naturally) and in general the methods are not compatible.
148
+
149
+ If you populate S3 by some means *other than* s3sync and then try to use s3sync
150
+ to "get" the S3 stuff to a local filesystem, you will want to use the
151
+ --make-dirs option. This causes the local dirs to be created even if there is no
152
+ s3sync-compatible directory node info stored on the S3 side. In other words,
153
+ local folders are conjured into existence whenever they are needed to make the
154
+ "get" succeed.
155
+
156
+
157
+ A word on SSL_CERT_DIR:
158
+ -----------------------
159
+ On my debian install I didn't find any root authority public keys. I installed
160
+ some by running this shell archive:
161
+ http://mirbsd.mirsolutions.de/cvs.cgi/src/etc/ssl.certs.shar
162
+ (You have to click download, and then run it wherever you want the certs to be
163
+ placed). I do not in any way assert that these certificates are good,
164
+ comprehensive, moral, noble, or otherwise correct. But I am using them.
165
+
166
+ If you don't set up a cert dir, and try to use ssl, then you'll 1) get an ugly
167
+ warning message slapped down by ruby, and 2) not have any protection AT ALL from
168
+ malicious servers posing as s3.amazonaws.com. Seriously... you want to get
169
+ this right if you're going to have any sensitive data being tossed around.
170
+ --
171
+ There is a debian package ca-certificates; this is what I'm using now.
172
+ apt-get install ca-certificates
173
+ and then use:
174
+ SSL_CERT_DIR=/etc/ssl/certs
175
+
176
+ You used to be able to use just one certificate, but recently AWS has started
177
+ using more than one CA.
178
+
179
+
180
+ Getting started:
181
+ ----------------
182
+ Invoke by typing s3sync.rb and you should get a nice usage screen.
183
+ Options can be specified in short or long form (except --delete, which has no
184
+ short form)
185
+
186
+ ALWAYS TEST NEW COMMANDS using --dryrun(-n) if you want to see what will be
187
+ affected before actually doing it. ESPECIALLY if you use --delete. Otherwise, do
188
+ not be surprised if you misplace a '/' or two and end up deleting all your
189
+ precious, precious files.
190
+
191
+ If you use the --public-read(-p) option, items sent to S3 will be ACL'd so that
192
+ anonymous web users can download them, given the correct URL. This could be
193
+ useful if you intend to publish directories of information for others to see.
194
+ For example, I use s3sync to publish itself to its home on S3 via the following
195
+ command: s3sync.rb -v -p publish/ ServEdge_pub:s3sync Where the files live in a
196
+ local folder called "publish" and I wish them to be copied to the URL:
197
+ http://s3.amazonaws.com/ServEdge_pub/s3sync/... If you use --ssl(-s) then your
198
+ connections with S3 will be encrypted. Otherwise your data will be sent in clear
199
+ form, i.e. easy to intercept by malicious parties.
200
+
201
+ If you want to prune items from the destination side which are not found on the
202
+ source side, you can use --delete. Always test this with -n first to make sure
203
+ the command line you specify is not going to do something terrible to your
204
+ cherished and irreplaceable data.
205
+
206
+
207
+ Updates and other discussion:
208
+ -----------------------------
209
+ The latest version of s3sync should normally be at:
210
+ http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
211
+ and the Amazon S3 forums probably have a few threads going on it at any given
212
+ time. I may not always see things posted to the threads, so if you want you can
213
+ contact me at gbs-s3@10forward.com too.
214
+
215
+
216
+ Change Log:
217
+ -----------
218
+
219
+ 2006-09-29:
220
+ Added support for --expires and --cache-control. Eg:
221
+ --expires="Thu, 01 Dec 2007 16:00:00 GMT"
222
+ --cache-control="no-cache"
223
+
224
+ Thanks to Charles for pointing out the need for this, and supplying a patch
225
+ proving that it would be trivial to add =) Apologies for not including the short
226
+ form (-e) for the expires. I have a rule that options taking arguments should
227
+ use the long form.
228
+ ----------
229
+
230
+ 2006-10-04
231
+ Several minor debugs and edge cases.
232
+ Fixed a bug where retries didn't rewind the stream to start over.
233
+ ----------
234
+
235
+ 2006-10-12
236
+ Version 1.0.5
237
+ Finally figured out and fixed bug of trying to follow local symlink-to-directory.
238
+ Fixed a really nasty sorting discrepancy that caused problems when files started
239
+ with the same name as a directory.
240
+ Retry on connection-reset on the S3 side.
241
+ Skip files that we can't read instead of dying.
242
+ ----------
243
+
244
+ 2006-10-12
245
+ Version 1.0.6
246
+ Some GC voodoo to try and keep a handle on the memory footprint a little better.
247
+ There is still room for improvement here.
248
+ ----------
249
+
250
+ 2006-10-13
251
+ Version 1.0.7
252
+ Fixed symlink dirs being stored to S3 as real dirs (and failing with 400)
253
+ Added a retry catch for connection timeout error.
254
+ (Hopefully) caught a bug that expected every S3 listing to contain results
255
+ ----------
256
+
257
+ 2006-10-14
258
+ Version 1.0.8
259
+ Was testing for file? before symlink? in localnode.stream. This meant that for
260
+ symlink files it was trying to shove the real file contents into the symlink
261
+ body on s3.
262
+ ----------
263
+
264
+ 2006-10-14
265
+ Version 1.0.9
266
+ Woops, I was using "max-entries" for some reason but the proper header is
267
+ "max-keys". Not a big deal.
268
+ Broke out the S3try stuff into a separate file so I could re-use it for s3cmd.rb
269
+ ----------
270
+
271
+ 2006-10-16
272
+ Added a couple debug lines; not even enough to call it a version revision.
273
+ ----------
274
+
275
+ 2006-10-25
276
+ Version 1.0.10
277
+ UTF-8 fixes.
278
+ Catching a couple more retry-able errors in s3try (instead of aborting the
279
+ program).
280
+ ----------
281
+
282
+ 2006-10-26
283
+ Version 1.0.11
284
+ Revamped some details of the generators and comparator so that directories are
285
+ handled in a more exact and uniform fashion across local and S3.
286
+ ----------
287
+
288
+ 2006-11-28
289
+ Version 1.0.12
290
+ Added a couple more error catches to s3try.
291
+ ----------
292
+
293
+ 2007-01-08
294
+ Version 1.0.13
295
+ Numerous small changes to slash and path handling, in order to catch several
296
+ cases where "root" directory nodes were not being created on S3.
297
+ This makes restores work a lot more intuitively in many cases.
298
+ ----------
299
+
300
+ 2007-01-25
301
+ Version 1.0.14
302
+ Peter Fales' marker fix.
303
+ Also, markers should be decoded into native charset (because that's what s3
304
+ expects to see).
305
+ ----------
306
+
307
+ 2007-02-19
308
+ Version 1.1.0
309
+ *WARNING* Lots of path-handling changes. *PLEASE* test safely before you just
310
+ swap this in for your working 1.0.x version.
311
+
312
+ - Adding --exclude (and there was much rejoicing).
313
+ - Found Yet Another Leading Slash Bug with respect to local nodes. It was always
314
+ "recursing" into the first folder even if there was no trailing slash and -r
315
+ wasn't specified. What it should have done in this case is simply create a node
316
+ for the directory itself, then stop (not check the dir's contents).
317
+ - Local node canonicalization was (potentially) stripping the trailing slash,
318
+ which we need in order to make some decisios in the local generator.
319
+ - Fixed problem where it would prepend a "/" to s3 key names even with blank
320
+ prefix.
321
+ - Fixed S3->local when there's no "/" in the source so it doesn't try to create
322
+ a folder with the bucket name.
323
+ - Updated s3try and s3_s3sync_mod to allow SSL_CERT_FILE
324
+ ----------
325
+
326
+ 2007-02-22
327
+ Version 1.1.1
328
+ Fixed dumb regression bug caused by the S3->local bucket name fix in 1.1.0
329
+ ----------
330
+
331
+ 2007-02-25
332
+ Version 1.1.2
333
+ Added --progress
334
+ ----------
335
+
336
+ 2007-06-02
337
+ Version 1.1.3
338
+ IMPORTANT!
339
+ Pursuant to http://s3sync.net/forum/index.php?topic=49.0 , the tar.gz now
340
+ expands into its own sub-directory named "s3sync" instead of dumping all the
341
+ files into the current directory.
342
+
343
+ In the case of commands of the form:
344
+ s3sync -r somedir somebucket:
345
+ The root directory node in s3 was being stored as "somedir/" instead of "somedir"
346
+ which caused restores to mess up when you say:
347
+ s3sync -r somebucket: restoredir
348
+ The fix to this, by coincidence, actually makes s3fox work even *less* well with
349
+ s3sync. I really need to build my own xul+javascript s3 GUI some day.
350
+
351
+ Also fixed some of the NoMethodError stuff for when --progress is used
352
+ and caught Errno::ETIMEDOUT
353
+ ----------
354
+
355
+ 2007-07-12
356
+ Version 1.1.4
357
+ Added Alastair Brunton's yaml config code.
358
+ ----------
359
+
360
+ 2007-11-17
361
+ Version 1.2.1
362
+ Compatibility for S3 API revisions.
363
+ When retries are exhausted, emit an error.
364
+ Don't ever try to delete the 'root' local dir.
365
+ ----------
366
+
367
+ 2007-11-20
368
+ Version 1.2.2
369
+ Handle EU bucket 307 redirects (in s3try.rb)
370
+ --make-dirs added
371
+ ----------
372
+
373
+ 2007-11-20
374
+ Version 1.2.3
375
+ Fix SSL verification settings that broke in new S3 API.
376
+ ----------
377
+
378
+ 2008-01-06
379
+ Version 1.2.4
380
+ Run from any dir (search "here" for includes).
381
+ Search out s3config.yml in some likely places.
382
+ Reset connection (properly) on retry-able non-50x errors.
383
+ Fix calling format bug preventing it from working from yml.
384
+ Added http proxy support.
385
+ ----------
386
+
387
+ FNORD
@@ -0,0 +1,172 @@
1
+ Welcome to s3cmd.rb
2
+ -------------------
3
+ This is a ruby program that wraps S3 operations into a simple command-line tool.
4
+ It is inspired by things like rsh3ll, #sh3ll, etc., but shares no code from
5
+ them. It's meant as a companion utility to s3sync.rb but could be used on its
6
+ own (provided you have read the other readme file and know how to use s3sync in
7
+ theory).
8
+
9
+ I made this even though lots of other "shell"s exist, because I wanted a
10
+ single-operation utility, instead of a shell "environment". This lends itself
11
+ more to scripting, etc. Also the delete operation on rsh3ll seems to be borken
12
+ at the moment? =(
13
+
14
+ Users not yet familiar with s3sync should read about that first, since s3cmd and
15
+ s3sync share a tremendous amount of conventions and syntax. Particularly you
16
+ have to set up environment variables prior to calling s3cmd, and s3cmd also uses
17
+ the "bucket:key" syntax popularized by s3sync. Many of the options are the same
18
+ too. Really, go read the other readme first if you haven't used s3sync yet.
19
+ Otherwise you will become confused. It's OK, I'll wait.
20
+
21
+ ....
22
+
23
+ In general, s3sync and s3cmd complement each other. s3sync is useful to perform
24
+ serious synchronization operations, and s3cmd allows you to do simple things
25
+ such as bucket management, listing, transferring single files, and the like.
26
+
27
+ Here is the usage, with examples to follow.
28
+
29
+ s3cmd.rb [options] <command> [arg(s)] version 1.0.0
30
+ --help -h --verbose -v --dryrun -n
31
+ --ssl -s --debug -d
32
+
33
+ Commands:
34
+ s3cmd.rb listbuckets [headers]
35
+ s3cmd.rb createbucket|deletebucket <bucket> [headers]
36
+ s3cmd.rb list <bucket>[:prefix] [max/page] [delimiter] [headers]
37
+ s3cmd.rb delete <bucket>:key [headers]
38
+ s3cmd.rb deleteall <bucket>[:prefix] [headers]
39
+ s3cmd.rb get|put <bucket>:key <file> [headers]
40
+
41
+
42
+ A note about [headers]
43
+ ----------------------
44
+ For some S3 operations, such as "put", you might want to specify certain headers
45
+ to the request such as Cache-Control, Expires, x-amz-acl, etc. Rather than
46
+ supporting a load of separate command-line options for these, I just allow
47
+ header specification. So to upload a file with public-read access you could
48
+ say:
49
+ s3cmd.rb put MyBucket:TheFile.txt x-amz-acl:public-read
50
+
51
+ If you don't need to add any particular headers then you can just ignore this
52
+ whole [headers] thing and pretend it's not there. This is somewhat of an
53
+ advanced option.
54
+
55
+
56
+ Examples
57
+ --------
58
+ List all the buckets your account owns:
59
+ s3cmd.rb listbuckets
60
+
61
+ Create a new bucket:
62
+ s3cmd.rb createbucket BucketName
63
+
64
+ Create a new bucket in the EU:
65
+ s3cmd.rb createbucket BucketName EU
66
+
67
+ Find out the location constraint of a bucket:
68
+ s3cmd.rb location BucketName
69
+
70
+ Delete an old bucket you don't want any more:
71
+ s3cmd.rb deletebucket BucketName
72
+
73
+ Find out what's in a bucket, 10 lines at a time:
74
+ s3cmd.rb list BucketName 10
75
+
76
+ Only look in a particular prefix:
77
+ s3cmd.rb list BucketName:startsWithThis
78
+
79
+ Look in the virtual "directory" named foo;
80
+ lists sub-"directories" and keys that are at this level.
81
+ Note that if you specify a delimiter you must specify a max before it.
82
+ (until I make the options parsing smarter)
83
+ s3cmd.rb list BucketName:foo/ 10 /
84
+
85
+ Delete a key:
86
+ s3cmd.rb delete BucketName:AKey
87
+
88
+ Delete all keys that match (like a combo between list and delete):
89
+ s3cmd.rb deleteall BucketName:SomePrefix
90
+
91
+ Only pretend you're going to delete all keys that match, but list them:
92
+ s3cmd.rb --dryrun deleteall BucketName:SomePrefix
93
+
94
+ Delete all keys in a bucket (leaving the bucket):
95
+ s3cmd.rb deleteall BucketName
96
+
97
+ Get a file from S3 and store it to a local file
98
+ s3cmd.rb get BucketName:TheFileOnS3.txt ALocalFile.txt
99
+
100
+ Put a local file up to S3
101
+ Note we don't automatically set mime type, etc.
102
+ NOTE that the order of the options doesn't change. S3 stays first!
103
+ s3cmd.rb put BucketName:TheFileOnS3.txt ALocalFile.txt
104
+
105
+
106
+ Change Log:
107
+ -----------
108
+ 2006-10-14:
109
+ Created.
110
+ -----------
111
+
112
+ 2006-10-16
113
+ Version 1.0.1
114
+ Force content length to a string value since some ruby's don't convert it right.
115
+ -----------
116
+
117
+ 2006-10-25
118
+ UTF-8 fixes.
119
+ -----------
120
+
121
+ 2006-11-28
122
+ Version 1.0.3
123
+ Added a couple more error catches to s3try.
124
+ ----------
125
+
126
+ 2007-01-25
127
+ Version 1.0.4
128
+ Peter Fales' marker fix.
129
+ Also, markers should be decoded into native charset (because that's what s3
130
+ expects to see).
131
+ ----------
132
+
133
+ 2007-02-19
134
+ - Updated s3try and s3_s3sync_mod to allow SSL_CERT_FILE
135
+ ----------
136
+
137
+ 2007-2-25
138
+ Added --progress
139
+ ----------
140
+
141
+ 2007-07-12
142
+ Version 1.0.6
143
+ Added Alastair Brunton's yaml config code.
144
+ ----------
145
+
146
+ 2007-11-17
147
+ Version 1.2.1
148
+ Compatibility for S3 API revisions.
149
+ When retries are exhausted, emit an error.
150
+ ----------
151
+
152
+ 2007-11-20
153
+ Version 1.2.2
154
+ Handle EU bucket 307 redirects (in s3try.rb)
155
+ ----------
156
+
157
+ 2007-11-20
158
+ Version 1.2.3
159
+ Fix SSL verification settings that broke in new S3 API.
160
+ ----------
161
+
162
+ 2008-01-06
163
+ Version 1.2.4
164
+ Run from any dir (search "here" for includes).
165
+ Search out s3config.yml in some likely places.
166
+ Reset connection (properly) on retry-able non-50x errors.
167
+ Fix calling format bug preventing it from working from yml.
168
+ Added http proxy support.
169
+ ----------
170
+
171
+
172
+ FNORD