s3backup 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,7 +6,19 @@ require 's3backup/tree_info'
6
6
  require 's3backup/crypt'
7
7
  module S3backup
8
8
  class Manager
9
- DEFAULT_BUF_READ_SIZE=1024*1024*128
9
+ DEFAULT_BUF_READ_SIZE=1024*1024*64
10
+ def shell_name(str)
11
+ str.gsub!(/[!"$&'()*,:;<=>?\[\]^`{|}\s]/, '\\\\\&')
12
+ a=[]
13
+ str.each_byte{|i|
14
+ if i < 0x80
15
+ a.push(sprintf("%c",i))
16
+ else
17
+ a.push("'"+sprintf("%c",i) + "'")
18
+ end
19
+ }
20
+ return a.join;
21
+ end
10
22
  def initialize(target,config)
11
23
  @target = target
12
24
  set_config(config)
@@ -39,8 +51,9 @@ module S3backup
39
51
  sub_dir.push(file) if File.directory?(dir+"/"+file)
40
52
  end
41
53
  exclude = ""
42
- exclude = exclude + " --exclude=" + sub_dir.map{|d| d.gsub(' ','\ ')}.join(" --exclude=") if sub_dir.length != 0
43
- cmd = "(cd #{File.dirname(dir).gsub(' ','\ ')};tar -czvf #{path.gsub(' ','\ ')} #{exclude} #{File.basename(dir).gsub(' ','\ ')} > /dev/null 2>&1)"
54
+ exclude = exclude + " --exclude=" + sub_dir.map{|d| shell_name(d)}.join(" --exclude=") if sub_dir.length != 0
55
+ cmd = "(cd #{shell_name(File.dirname(dir))};tar -czvf #{shell_name(path)} #{exclude} #{shell_name(File.basename(dir))}" +
56
+ " > /dev/null 2>&1)"
44
57
  S3log.debug(cmd)
45
58
  system(cmd)
46
59
  unless $?.success?
@@ -48,7 +61,7 @@ module S3backup
48
61
  end
49
62
  end
50
63
  def from_tgz(path,dir)
51
- cmd = "tar -xzvf #{path.gsub(' ','\ ')} -C #{dir.gsub(' ','\ ')} > /dev/null 2>&1"
64
+ cmd = "tar -xzvf #{shell_name(path)} -C #{shell_name(dir)} > /dev/null 2>&1"
52
65
  S3log.debug(cmd)
53
66
  system(cmd)
54
67
  unless $?.success?
@@ -3,6 +3,7 @@ require 'aws/s3'
3
3
  module S3backup
4
4
  class S3Wrapper
5
5
  attr_reader :bucket
6
+ MAX_TRY_COUNT = 5
6
7
  def initialize(config,create_flg)
7
8
  @bucket= nil
8
9
  @s3objects =nil
@@ -54,7 +55,19 @@ module S3backup
54
55
  def post(key,val)
55
56
  key_name = CGI.escape(key)
56
57
  S3log.info("S3Object.store(#{key_name})")
57
- AWS::S3::S3Object.store(key_name,val,@bucket_name)
58
+ count = 0;
59
+ while count < MAX_TRY_COUNT do
60
+ begin
61
+ AWS::S3::S3Object.store(key_name,val,@bucket_name)
62
+ break;
63
+ rescue => ex
64
+ count+=1;
65
+ AWS::S3::Base.establish_connection!(args)
66
+ end
67
+ end
68
+ if count >= MAX_TRY_COUNT
69
+ raise "post error occurd path #{key_name} \n"
70
+ end
58
71
  end
59
72
  def set_config(config)
60
73
  err_msg = ""
data/lib/s3backup.rb CHANGED
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  module S3backup
5
- VERSION = '0.6.3'
5
+ VERSION = '0.6.4'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takeshi Morita
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-15 00:00:00 +09:00
12
+ date: 2010-01-18 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -22,6 +22,26 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: 0.6.2
24
24
  version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: rubyforge
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.0.3
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: gemcutter
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.3.0
44
+ version:
25
45
  - !ruby/object:Gem::Dependency
26
46
  name: hoe
27
47
  type: :development
@@ -30,7 +50,7 @@ dependencies:
30
50
  requirements:
31
51
  - - ">="
32
52
  - !ruby/object:Gem::Version
33
- version: 2.3.3
53
+ version: 2.5.0
34
54
  version:
35
55
  description: S3Backup is a backup tool to local directory to Amazon S3.
36
56
  email: