backup2everbox 0.0.1 → 0.0.2

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.
data/.gitignore CHANGED
@@ -2,3 +2,4 @@ pkg/*
2
2
  *.gem
3
3
  .bundle
4
4
  *.swp
5
+ html
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- backup2everbox (0.0.1)
4
+ backup2everbox (0.0.2)
5
5
  activesupport
6
6
  backup
7
7
  oauth
data/History.rdoc ADDED
@@ -0,0 +1,7 @@
1
+ === 0.0.2 / 2011-02-02
2
+ * clean log
3
+ * support "rake rdoc"
4
+ * don't try to create dir if dir already exist
5
+
6
+ === 0.0.1 / 2011-01-30
7
+ * it works
data/README.rdoc ADDED
@@ -0,0 +1,49 @@
1
+ = 简介
2
+
3
+ 备份你的数据、文件到 EverBox
4
+
5
+ = 使用方法
6
+
7
+ 1. 注册一个 EverBox 帐号: http://www.everbox.com/ , 注意必须注册盛大通行证帐号,
8
+ 如果需要邀请码,请到 http://www.douban.com/group/topic/17242955/
9
+
10
+ 2. 运行 sudo gem install backup2everbox
11
+
12
+ 3. 运行 sudo backup --setup
13
+
14
+ 4. 修改 /opt/backup/config/backup.rb, 改为如下的形式
15
+
16
+ gem 'backup2everbox'
17
+ require 'backup2everbox'
18
+
19
+ backup 'mysql-backup-everbox' do
20
+
21
+ adapter :mysql do
22
+ user 'USERNAME'
23
+ password 'PASSWORD'
24
+ database 'DBNAME'
25
+ skip_tables ['django_session']
26
+ options do
27
+ host '127.0.0.1'
28
+ port '3306'
29
+ end
30
+ end
31
+
32
+ storage :everbox do
33
+ username 'YOUR SDO USERNAME'
34
+ password 'YOUR SDO PASSWORD'
35
+ path '/backups'
36
+ end
37
+
38
+ keep_backups 10
39
+ encrypt_with_password false
40
+ notify false
41
+
42
+ end
43
+
44
+ 5. 运行 sudo backup -r mysql-backup-everbox
45
+
46
+ 6. backup 支持备份目录,数据库等多种源,并且支持非对称密钥加密来保护数据安全,
47
+ 具体可以参考 backup 的文档: https://github.com/meskyanichi/backup
48
+
49
+
data/Rakefile CHANGED
@@ -1,2 +1,9 @@
1
1
  require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
+ require 'rake/rdoctask'
4
+ ENV["RDOC_OPTS"] ||= "-c UTF-8"
5
+ Rake::RDocTask.new do |rd|
6
+ rd.main = "README.rdoc"
7
+ rd.rdoc_files.include("README.rdoc", "History.rdoc", "lib/**/*.rb")
8
+ rd.options << "--charset" << "UTF-8"
9
+ end
data/TODO CHANGED
@@ -1 +0,0 @@
1
- * don't try create dir if dir already exist
@@ -13,6 +13,9 @@ Gem::Specification.new do |s|
13
13
  s.description = %q{backup to EverBox}
14
14
 
15
15
  s.rubyforge_project = "backup2everbox"
16
+ s.rdoc_options << '--main' << 'README.rdoc' <<
17
+ '--charset' << 'UTF-8'
18
+ s.extra_rdoc_files = ['README.rdoc', 'History.rdoc']
16
19
 
17
20
  s.add_dependency 'backup'
18
21
  s.add_dependency 'activesupport'
@@ -3,7 +3,6 @@ require 'cgi'
3
3
  require 'oauth'
4
4
  require 'json'
5
5
  require 'rest_client'
6
- require 'pp'
7
6
 
8
7
 
9
8
  module Backup
@@ -43,9 +42,26 @@ module Backup
43
42
  !!@access_token
44
43
  end
45
44
 
45
+ def path_stat(real_remote_path)
46
+ response = access_token.post(fs(:get), JSON.dump({:path => real_remote_path}), {'Content-Type' => 'text/plain'})
47
+ return :not_exist if response.code.to_i == 404
48
+ info = JSON.parse(response.body)
49
+ return :not_exist if info["type"] & 0x8000 != 0
50
+ return :file if info["type"] & 0x1 != 0
51
+ return :dir if info["type"] & 0x2 != 0
52
+ raise "unknown type: #{info["type"]}"
53
+ end
54
+
46
55
  def upload(filename, remote_path, opts={})
47
56
  remote_path = find_real_remote_path(remote_path)
48
- mkdir_p(remote_path)
57
+ stat = path_stat(remote_path)
58
+ if stat == :not_exist
59
+ puts "remote dir not exist, try to create it"
60
+ mkdir_p(remote_path)
61
+ elsif stat == :file
62
+ raise "remote path is a file, failed to backup"
63
+ end
64
+
49
65
  basename = File.basename(filename)
50
66
  target_path = File.expand_path(basename, remote_path)
51
67
  keys = calc_digests(filename)
@@ -56,12 +72,10 @@ module Backup
56
72
  :fileSize => File.open(filename).stat.size,
57
73
  :base => ''
58
74
  }
59
- pp params
60
75
  info = JSON.parse(access_token.post(fs(:prepare_put), JSON.dump(params), {'Content-Type' => 'text/plain' }).body)
61
- pp info
62
76
  File.open(filename) do |f|
63
77
  info["required"].each do |x|
64
- puts "upload block ##{x["index"]}"
78
+ puts "uploading block ##{x["index"]}"
65
79
  f.seek(x["index"] * @options[:chunk_size])
66
80
  code, response = http_request x['url'], f.read(@options[:chunk_size]), :method => :put
67
81
  if code != 200
@@ -73,9 +87,7 @@ module Backup
73
87
 
74
88
  ftime = (Time.now.to_i * 1000 * 1000 * 10).to_s
75
89
  params = params.merge :editTime => ftime, :mimeType => 'application/octet-stream'
76
- pp access_token
77
90
  code, response = access_token.post(fs(:commit_put), params.to_json, {'Content-Type' => 'text/plain'})
78
- pp code, response
79
91
  end
80
92
 
81
93
  def delete(remote_path, opts={})
@@ -1,3 +1,3 @@
1
1
  module Backup2everbox
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backup2everbox
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease:
4
+ hash: 27
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - LI Daobing
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-30 00:00:00 +08:00
18
+ date: 2011-02-02 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -81,13 +81,15 @@ executables: []
81
81
 
82
82
  extensions: []
83
83
 
84
- extra_rdoc_files: []
85
-
84
+ extra_rdoc_files:
85
+ - README.rdoc
86
+ - History.rdoc
86
87
  files:
87
88
  - .gitignore
88
89
  - Gemfile
89
90
  - Gemfile.lock
90
- - README
91
+ - History.rdoc
92
+ - README.rdoc
91
93
  - Rakefile
92
94
  - TODO
93
95
  - backup2everbox.gemspec
@@ -101,8 +103,11 @@ homepage: http://rubygems.org/gems/backup2everbox
101
103
  licenses: []
102
104
 
103
105
  post_install_message:
104
- rdoc_options: []
105
-
106
+ rdoc_options:
107
+ - --main
108
+ - README.rdoc
109
+ - --charset
110
+ - UTF-8
106
111
  require_paths:
107
112
  - lib
108
113
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -126,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
131
  requirements: []
127
132
 
128
133
  rubyforge_project: backup2everbox
129
- rubygems_version: 1.4.2
134
+ rubygems_version: 1.3.7
130
135
  signing_key:
131
136
  specification_version: 3
132
137
  summary: backup to EverBox
data/README DELETED
@@ -1,41 +0,0 @@
1
- 使用方法
2
- ========
3
-
4
- 1. 注册一个 EverBox 帐号: http://www.everbox.com/ , 注意必须注册盛大通行证帐号,
5
- 如果需要邀请码,请到 http://www.douban.com/group/topic/17242955/
6
-
7
- 2. 运行 sudo gem install backup2everbox
8
-
9
- 3. 运行 sudo backup --setup
10
-
11
- 4. 修改 /opt/backup/config/backup.rb, 改为如下的形式
12
-
13
- # ----8<----------
14
- gem 'backup2everbox'
15
- require 'backup2everbox'
16
-
17
- backup 'archive-backup-everbox' do
18
-
19
- adapter :archive do
20
- files ["/path/to/dir/need/backup"]
21
- end
22
-
23
- storage :everbox do
24
- username 'YOUR SDO USERNAME'
25
- password 'YOUR SDO PASSWORD'
26
- path '/backups'
27
- end
28
-
29
- keep_backups 10
30
- encrypt_with_password false
31
- notify false
32
-
33
- end
34
- # ----8<----------
35
-
36
- 5. 运行 sudo backup -r archive-backup-everbox
37
-
38
- 6. backup 支持备份目录,数据库等多种源,具体可以参考 backup 的文档:
39
- https://github.com/meskyanichi/backup
40
-
41
-