backup2everbox 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,93 +1,45 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- backup2everbox (0.0.3)
4
+ backup2everbox (0.1.0)
5
5
  activesupport
6
- backup (~> 2.0)
6
+ backup (~> 3.0)
7
7
  launchy
8
8
  oauth
9
9
  rest-client
10
- sqlite3
11
10
 
12
11
  GEM
13
12
  remote: http://rubygems.org/
14
13
  specs:
15
- activemodel (3.2.6)
16
- activesupport (= 3.2.6)
17
- builder (~> 3.0.0)
18
- activerecord (3.2.6)
19
- activemodel (= 3.2.6)
20
- activesupport (= 3.2.6)
21
- arel (~> 3.0.2)
22
- tzinfo (~> 0.3.29)
23
14
  activesupport (3.2.6)
24
15
  i18n (~> 0.6)
25
16
  multi_json (~> 1.0)
26
17
  addressable (2.2.8)
27
- arel (3.0.2)
28
- backup (2.4.5.1)
29
- activerecord (>= 2.3.5)
30
- cloudfiles (>= 1.4.7)
31
- dropbox (>= 1.1.2)
32
- fog (~> 0.3.5)
33
- hirb (>= 0.2.9)
34
- json_pure (~> 1.4.6)
35
- net-scp (>= 1.0.2)
36
- net-sftp (>= 2.0.4)
37
- net-ssh (>= 2.0.15)
38
- pony (>= 0.5)
39
- builder (3.0.0)
40
- cloudfiles (1.5.0.1)
41
- json
42
- dropbox (1.3.0)
43
- json (>= 1.2.0)
44
- multipart-post (>= 1.1.0)
45
- oauth (>= 0.3.6)
46
- excon (0.14.1)
47
- fog (0.3.34)
48
- builder
49
- excon (>= 0.3.6)
50
- formatador (>= 0.0.16)
51
- json
52
- mime-types
53
- net-ssh (>= 2.0.23)
54
- nokogiri (>= 1.4.4)
55
- ruby-hmac
56
- formatador (0.2.3)
57
- hirb (0.6.2)
18
+ backup (3.0.24)
19
+ open4 (~> 1.3.0)
20
+ thor (~> 0.14.6)
21
+ columnize (0.3.6)
22
+ debugger (1.1.4)
23
+ columnize (>= 0.3.1)
24
+ debugger-linecache (~> 1.1.1)
25
+ debugger-ruby_core_source (~> 1.1.3)
26
+ debugger-linecache (1.1.1)
27
+ debugger-ruby_core_source (>= 1.1.1)
28
+ debugger-ruby_core_source (1.1.3)
58
29
  i18n (0.6.0)
59
30
  json (1.6.6)
60
- json_pure (1.4.6)
61
31
  launchy (2.1.0)
62
32
  addressable (~> 2.2.6)
63
- mail (2.4.4)
64
- i18n (>= 0.4.0)
65
- mime-types (~> 1.16)
66
- treetop (~> 1.4.8)
67
33
  mime-types (1.19)
68
34
  multi_json (1.3.6)
69
- multipart-post (1.1.5)
70
- net-scp (1.0.4)
71
- net-ssh (>= 1.99.1)
72
- net-sftp (2.0.5)
73
- net-ssh (>= 2.0.9)
74
- net-ssh (2.5.2)
75
- nokogiri (1.5.4)
76
35
  oauth (0.4.6)
77
- polyglot (0.3.3)
78
- pony (1.4)
79
- mail (> 2.0)
36
+ open4 (1.3.0)
80
37
  rake (0.8.7)
81
38
  rdoc (3.12)
82
39
  json (~> 1.4)
83
40
  rest-client (1.6.7)
84
41
  mime-types (>= 1.16)
85
- ruby-hmac (0.4.0)
86
- sqlite3 (1.3.6)
87
- treetop (1.4.10)
88
- polyglot
89
- polyglot (>= 0.3.1)
90
- tzinfo (0.3.33)
42
+ thor (0.14.6)
91
43
 
92
44
  PLATFORMS
93
45
  ruby
@@ -95,5 +47,6 @@ PLATFORMS
95
47
  DEPENDENCIES
96
48
  backup2everbox!
97
49
  bundler (>= 1.0.0)
50
+ debugger
98
51
  rake (= 0.8.7)
99
52
  rdoc
@@ -1,3 +1,6 @@
1
+ === 0.1.0 / 2012-06-25
2
+ * support backup ~> 3.0
3
+
1
4
  === 0.0.3 / 2012-06-22
2
5
  * only working with backup-2
3
6
  * old everbox auth method no longer works
@@ -11,55 +11,50 @@
11
11
  1. 注册一个 EverBox 帐号: http://www.everbox.com/ , 注意必须注册盛大通行证帐号,
12
12
  如果需要邀请码,请到 http://www.douban.com/group/topic/17242955/
13
13
 
14
- 2. 运行 sudo gem install backup2everbox
14
+ 2. 运行 gem install backup2everbox
15
15
 
16
- 3. 运行 sudo backup --setup
16
+ 3. 运行 backup generate:config
17
17
 
18
- 4. 运行 backup2everbox, 得到认证码,输出如下所示
18
+ 4. 运行 backup generate:model --trigger=mysql_backup_everbox
19
+
20
+ 5. 运行 backup2everbox, 得到认证码,输出如下所示
19
21
 
20
22
  open url in your browser: http://account.everbox.com/...
21
23
  please input the verification code: 123456
22
- add following code to your /opt/backup/config/backup.rb
24
+
25
+ add following code to your ~/Backup/models/foo.rb
23
26
  ##################################################
24
- storage :everbox do
25
- access_key_id '1234567890abcdefgh'
26
- secret_access_key 'hgfedcba0987654321'
27
- path '/backups'
28
- end
27
+ store_with Everbox do |eb|
28
+ eb.token = '1234567890abcdefgh'
29
+ eb.secret = 'hgfedcba0987654321'
30
+ end
29
31
  ##################################################
30
32
 
33
+ 6. 修改 ~/Backup/models/mysql_backup_everbox.rb, 改为如下的形式
31
34
 
32
- 5. 修改 /opt/backup/config/backup.rb, 改为如下的形式
33
-
35
+ require 'rubygems'
34
36
  gem 'backup2everbox'
35
37
  require 'backup2everbox'
36
38
 
37
- backup 'mysql-backup-everbox' do
38
-
39
- adapter :mysql do
40
- user 'USERNAME'
41
- password 'PASSWORD'
42
- database 'DBNAME'
43
- skip_tables ['django_session']
44
- options do
45
- host '127.0.0.1'
46
- port '3306'
47
- end
48
- end
39
+ Backup::Model.new(:mysql_backup_everbox, 'Description for mysql_backup_everbox') do
40
+ split_into_chunks_of 250
49
41
 
50
- storage :everbox do
51
- access_key_id '1234567890abcdefgh'
52
- secret_access_key 'hgfedcba0987654321'
53
- path '/backups'
42
+ database MySQL do |db|
43
+ db.name = "giga_development"
44
+ db.username = "my_username"
45
+ db.password = "my_password"
46
+ db.host = "localhost"
47
+ db.port = 3306
48
+ db.socket = "/tmp/mysql.sock"
54
49
  end
55
50
 
56
- keep_backups 10
57
- encrypt_with_password false
58
- notify false
59
-
51
+ store_with Everbox do |eb|
52
+ eb.token = '1234567890abcdefgh'
53
+ eb.secret = 'hgfedcba0987654321'
54
+ end
60
55
  end
61
56
 
62
- 6. 运行 sudo backup -r mysql-backup-everbox
57
+ 6. 运行 sudo backup perform -t mysql_backup_everbox
63
58
 
64
59
  7. backup 支持备份目录,数据库等多种源,并且支持非对称密钥加密来保护数据安全,
65
- 具体可以参考 backup 的文档: https://github.com/meskyanichi/backup/tree/backup-2
60
+ 具体可以参考 backup 的文档: https://github.com/meskyanichi/backup
@@ -17,15 +17,15 @@ Gem::Specification.new do |s|
17
17
  '--charset' << 'UTF-8'
18
18
  s.extra_rdoc_files = ['README.rdoc', 'History.rdoc']
19
19
 
20
- s.add_dependency 'backup', '~> 2.0'
20
+ s.add_dependency 'backup', '~> 3.0'
21
21
  s.add_dependency 'activesupport'
22
22
  s.add_dependency 'oauth'
23
23
  s.add_dependency 'rest-client'
24
24
  s.add_dependency 'launchy'
25
- s.add_dependency 'sqlite3'
26
25
  s.add_development_dependency "bundler", ">= 1.0.0"
27
26
  s.add_development_dependency 'rake', "0.8.7"
28
27
  s.add_development_dependency 'rdoc'
28
+ s.add_development_dependency 'debugger'
29
29
 
30
30
  s.files = `git ls-files`.split("\n")
31
31
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -0,0 +1,6 @@
1
+ module Backup
2
+ module Config
3
+ module Everbox
4
+ end
5
+ end
6
+ end
@@ -25,6 +25,8 @@ module Backup
25
25
 
26
26
  def authorize!
27
27
  @access_token = OAuth::AccessToken.from_hash(@consumer, {:oauth_token => authorizing_token, :oauth_token_secret => authorizing_secret})
28
+ raise "@access_token.token is nil" if @access_token.token.nil?
29
+ raise "@access_token.secret is nil" if @access_token.secret.nil?
28
30
  puts @access_token.inspect
29
31
  end
30
32
 
@@ -43,6 +45,7 @@ module Backup
43
45
  end
44
46
 
45
47
  def upload(filename, remote_path, opts={})
48
+ raise TypeError, "filename should be string, but #{filename.class}" unless filename.is_a?(String)
46
49
  remote_path = find_real_remote_path(remote_path)
47
50
  stat = path_stat(remote_path)
48
51
  if stat == :not_exist
@@ -63,6 +66,7 @@ module Backup
63
66
  :base => ''
64
67
  }
65
68
  info = JSON.parse(access_token.post(fs(:prepare_put), JSON.dump(params), {'Content-Type' => 'text/plain' }).body)
69
+ raise "prepare_put failed:\n#{info}" unless info["required"].is_a?(Array)
66
70
  File.open(filename) do |f|
67
71
  info["required"].each do |x|
68
72
  puts "uploading block ##{x["index"]}"
@@ -181,17 +185,11 @@ module Backup
181
185
  end
182
186
  end
183
187
 
184
- attr_accessor :adapter, :procedure, :final_file, :tmp_path, :api_key, :secret_access_key, :access_key_id, :path
188
+ attr_accessor :token, :secret
185
189
 
186
- def initialize(adapter=false)
187
- if adapter
188
- self.adapter = adapter
189
- self.procedure = adapter.procedure
190
- self.final_file = adapter.final_file
191
- self.tmp_path = adapter.tmp_path.gsub('\ ', ' ')
192
-
193
- load_storage_configuration_attributes
194
- end
190
+ def initialize(token, secret)
191
+ @token = token
192
+ @secret = secret
195
193
  end
196
194
 
197
195
  def static_initialize(procedure)
@@ -201,12 +199,12 @@ module Backup
201
199
 
202
200
  def session
203
201
  opts = {}
204
- opts[:api_key] = api_key unless api_key.nil?
205
- opts[:secret_access_key] = secret_access_key unless secret_access_key.nil?
202
+ opts[:api_key] = token unless token.nil?
203
+ opts[:secret_access_key] = secret unless secret.nil?
206
204
  @session ||= Session.new(opts)
207
205
  unless @session.authorized?
208
- @session.authorizing_token = access_key_id
209
- @session.authorizing_secret = secret_access_key
206
+ @session.authorizing_token = token
207
+ @session.authorizing_secret = secret
210
208
  @session.authorize!
211
209
  end
212
210
 
@@ -1,12 +1,44 @@
1
1
  require 'backup/connection/everbox'
2
+ require 'debugger'
2
3
 
3
4
  module Backup
4
5
  module Storage
5
6
  class Everbox < Base
6
- def initialize(adapter)
7
- everbox = Backup::Connection::Everbox.new(adapter)
8
- everbox.store
7
+
8
+ attr_accessor :token, :secret
9
+ attr_accessor :path
10
+
11
+ def initialize(model, storage_id = nil, &block)
12
+ super(model, storage_id)
13
+
14
+ @path ||= 'backups'
15
+
16
+ instance_eval(&block) if block_given?
9
17
  end
18
+
19
+ def transfer!
20
+ remote_path = remote_path_for(@package)
21
+
22
+ connection = Backup::Connection::Everbox.new(token, secret)
23
+
24
+ files_to_transfer_for(@package) do |local_file, remote_file|
25
+ Logger.message "#{storage_name} started transferring " +
26
+ "'#{ local_file }'."
27
+ connection.session.upload(
28
+ File.join(local_path, local_file),
29
+ File.join(remote_path, remote_file),
30
+ :mode => :dropbox
31
+ )
32
+
33
+
34
+ #File.open(File.join(local_path, local_file), 'r') do |file|
35
+ # connection.put_object(
36
+ # bucket, File.join(remote_path, remote_file), file
37
+ # )
38
+ #end
39
+ end
40
+ end
41
+
10
42
  end
11
43
  end
12
44
  end
@@ -1,4 +1,4 @@
1
- require 'active_support/core_ext/module/aliasing'
1
+ require 'backup/config/everbox'
2
2
 
3
3
  module Backup
4
4
  module Connection
@@ -10,24 +10,4 @@ module Backup
10
10
  module Record
11
11
  autoload :Everbox, 'backup/record/everbox'
12
12
  end
13
- module Configuration
14
- class Base
15
- def storage_class_with_everbox
16
- res = storage_class_without_everbox
17
- if res.nil? and @storage_name == :everbox
18
- res = Backup::Storage::Everbox
19
- end
20
- res
21
- end
22
- def record_class_with_everbox
23
- res = record_class_without_everbox
24
- if res.nil? and @storage_name == :everbox
25
- res = Backup::Record::Everbox
26
- end
27
- res
28
- end
29
- alias_method_chain :storage_class, :everbox
30
- alias_method_chain :record_class, :everbox
31
- end
32
- end
33
13
  end
@@ -29,13 +29,13 @@ module Backup2everbox
29
29
  STDOUT.flush
30
30
  verification_code = STDIN.readline.strip
31
31
  access_token = request_token.get_access_token :oauth_verifier => verification_code
32
- puts "add following code to your /opt/backup/config/backup.rb"
32
+ puts
33
+ puts "add following code to your ~/Backup/models/foo.rb"
33
34
  puts "#" * 50
34
- puts "storage :everbox do"
35
- puts " access_key_id '#{access_token.token}'"
36
- puts " secret_access_key '#{access_token.secret}'"
37
- puts " path '/backups'"
38
- puts "end"
35
+ puts " store_with Everbox do |eb|"
36
+ puts " eb.token = '#{access_token.token}'"
37
+ puts " eb.secret = '#{access_token.secret}'"
38
+ puts " end"
39
39
  puts "#" * 50
40
40
  end
41
41
 
@@ -1,3 +1,3 @@
1
1
  module Backup2everbox
2
- VERSION = "0.0.3"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backup2everbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-21 00:00:00.000000000 Z
12
+ date: 2012-06-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: backup
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '2.0'
21
+ version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '2.0'
29
+ version: '3.0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: activesupport
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -92,55 +92,55 @@ dependencies:
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
94
  - !ruby/object:Gem::Dependency
95
- name: sqlite3
95
+ name: bundler
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ! '>='
100
100
  - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :runtime
101
+ version: 1.0.0
102
+ type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: 1.0.0
110
110
  - !ruby/object:Gem::Dependency
111
- name: bundler
111
+ name: rake
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
115
- - - ! '>='
115
+ - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: 1.0.0
117
+ version: 0.8.7
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  none: false
122
122
  requirements:
123
- - - ! '>='
123
+ - - '='
124
124
  - !ruby/object:Gem::Version
125
- version: 1.0.0
125
+ version: 0.8.7
126
126
  - !ruby/object:Gem::Dependency
127
- name: rake
127
+ name: rdoc
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
- - - '='
131
+ - - ! '>='
132
132
  - !ruby/object:Gem::Version
133
- version: 0.8.7
133
+ version: '0'
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  none: false
138
138
  requirements:
139
- - - '='
139
+ - - ! '>='
140
140
  - !ruby/object:Gem::Version
141
- version: 0.8.7
141
+ version: '0'
142
142
  - !ruby/object:Gem::Dependency
143
- name: rdoc
143
+ name: debugger
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  none: false
146
146
  requirements:
@@ -175,8 +175,8 @@ files:
175
175
  - TODO
176
176
  - backup2everbox.gemspec
177
177
  - bin/backup2everbox
178
+ - lib/backup/config/everbox.rb
178
179
  - lib/backup/connection/everbox.rb
179
- - lib/backup/record/everbox.rb
180
180
  - lib/backup/storage/everbox.rb
181
181
  - lib/backup2everbox.rb
182
182
  - lib/backup2everbox/cli.rb
@@ -1,23 +0,0 @@
1
- require 'backup/connection/everbox'
2
-
3
- module Backup
4
- module Record
5
- class Everbox < Backup::Record::Base
6
- def load_specific_settings(adapter)
7
- end
8
-
9
- private
10
-
11
- def self.destroy_backups(procedure, backups)
12
- everbox = Backup::Connection::Everbox.new
13
- everbox.static_initialize(procedure)
14
- session = everbox.session
15
- backups.each do |backup|
16
- puts "\nDestroying backup \"#{backup.filename}\"."
17
- path_to_file = File.join(everbox.path, backup.filename)
18
- session.delete(path_to_file, :mode => :everbox)
19
- end
20
- end
21
- end
22
- end
23
- end