cloud_backup 1.0.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.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +37 -0
- data/Rakefile +2 -0
- data/cloud_backup.gemspec +25 -0
- data/lib/cloud_backup/cli.rb +19 -0
- data/lib/cloud_backup/dumper.rb +61 -0
- data/lib/cloud_backup/version.rb +3 -0
- data/lib/cloud_backup.rb +6 -0
- data/lib/settings.yml +7 -0
- data/spec/dumper_spec.rb +39 -0
- data/spec/spec_helper.rb +17 -0
- metadata +115 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5b1ddec795b76861727222e47c8a0142683df3ed
|
4
|
+
data.tar.gz: e7ae1367cce78dcdf79d14c1ae97f6568cbab49f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7d76d796542c55caa5106e7d037d3022167760f49bfb8add041a26e9c0b389c470e47a7b42fe04143c780b3edb9995f9c3b7b1dee4044c012fd0201ecdf3b8c0
|
7
|
+
data.tar.gz: d640d936a3bd3585500fa85e5beaf31a735508025fb7294270c128db09cb3d81d72e8a268ae15cf6e9f5210c5e295a6d1ae457b181a54973ca79144808797b08
|
data/.gitignore
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
23
|
+
.idea/
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Serdar Dogruyol
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
## What is it?
|
2
|
+
|
3
|
+
A tiny Ruby program to dump your Database and store it in the Cloud.
|
4
|
+
|
5
|
+
#### Currently supported DBs
|
6
|
+
- MySQL
|
7
|
+
|
8
|
+
#### Currently supported Clouds
|
9
|
+
- Dropbox
|
10
|
+
|
11
|
+
##Requirements
|
12
|
+
|
13
|
+
The only requirements are working a Ruby installation and RubyGems.
|
14
|
+
|
15
|
+
For Dropbox : You also need to have a working Dropbox account of your own and need to create an app for yourself.
|
16
|
+
|
17
|
+
##Configuration
|
18
|
+
|
19
|
+
All the configuration including your Dropbox app token and secret is done via settings.yml
|
20
|
+
|
21
|
+
##How to
|
22
|
+
|
23
|
+
Just clone this repo
|
24
|
+
|
25
|
+
git clone https://github.com/Sdogruyol/dump-to-cloud
|
26
|
+
|
27
|
+
And bundle.
|
28
|
+
|
29
|
+
https://github.com/Sdogruyol/dump-to-cloud
|
30
|
+
|
31
|
+
Then
|
32
|
+
|
33
|
+
ruby dump.rb
|
34
|
+
|
35
|
+
##Planned
|
36
|
+
- Add more databases (E.g Postgres)
|
37
|
+
- Add more cloud providers (E.g Google Drive, S3)
|
data/Rakefile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'cloud_backup/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "cloud_backup"
|
8
|
+
spec.version = CloudBackup::VERSION
|
9
|
+
spec.authors = ["Serdar Dogruyol"]
|
10
|
+
spec.email = ["dogruyolserdar@gmail.com"]
|
11
|
+
spec.summary = %q{Backup files and database dumps to Cloud.}
|
12
|
+
spec.description = %q{Backup files and database dumps to Cloud.}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency 'dropbox-sdk'
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
23
|
+
spec.add_development_dependency "rake"
|
24
|
+
spec.add_development_dependency 'rspec'
|
25
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative 'dumper'
|
2
|
+
|
3
|
+
class CLI
|
4
|
+
def initialize
|
5
|
+
@dumper = Dumper.new
|
6
|
+
puts 'What type of dump do you want?'
|
7
|
+
puts '1. Auto Dump (Auto Dumps the Db and Stores it to Dropbox)'
|
8
|
+
puts '2. Select dump file by yourself'
|
9
|
+
dump_type = gets.strip
|
10
|
+
case dump_type
|
11
|
+
when '1'
|
12
|
+
@dumper.dump_db()
|
13
|
+
when '2'
|
14
|
+
puts 'Please enter the dump file name.'
|
15
|
+
file_name = gets.strip
|
16
|
+
@dumper.upload_file file_name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'dropbox_sdk'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
class Dumper
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
settings = YAML.load_file('settings.yml')
|
8
|
+
@app_key = settings['dropbox']['app_key']
|
9
|
+
@app_secret = settings['dropbox']['app_secret']
|
10
|
+
@db_name = settings['database']['db_name']
|
11
|
+
@db_password = settings['database']['db_password']
|
12
|
+
@db_user = settings['database']['db_user']
|
13
|
+
|
14
|
+
if File::exists?(".dump_db")
|
15
|
+
data = File.read(".dump_db")
|
16
|
+
@access_token = Marshal.load(data)
|
17
|
+
end
|
18
|
+
|
19
|
+
if @access_token
|
20
|
+
puts 'Your access token is ' + @access_token
|
21
|
+
else
|
22
|
+
authorize
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def authorize
|
27
|
+
flow = DropboxOAuth2FlowNoRedirect.new(@app_key, @app_secret)
|
28
|
+
authorize_url = flow.start()
|
29
|
+
|
30
|
+
# Have the user sign in and authorize this app
|
31
|
+
puts '1. Go to this link in your web browser: ' + authorize_url
|
32
|
+
puts '2. Click "Allow" (you might have to log in first)'
|
33
|
+
puts '3. Copy the authorization code'
|
34
|
+
print 'Enter the authorization code here: '
|
35
|
+
code = gets.strip
|
36
|
+
|
37
|
+
# This will fail if the user gave us an invalid authorization code
|
38
|
+
@access_token, user_id = flow.finish(code)
|
39
|
+
data = Marshal.dump(@access_token)
|
40
|
+
open('.dump_db', 'wb') { |f| f.puts data }
|
41
|
+
end
|
42
|
+
|
43
|
+
def upload_file(file_name)
|
44
|
+
client = DropboxClient.new(@access_token)
|
45
|
+
file = open(file_name)
|
46
|
+
puts 'Uploading file!! Please wait.'
|
47
|
+
response = client.put_file("/#{file_name}", file)
|
48
|
+
puts "uploaded:", response.inspect
|
49
|
+
end
|
50
|
+
|
51
|
+
def dump_db
|
52
|
+
date = Time.now.strftime('%d%m%y')
|
53
|
+
file_name = "#{@db_name}_#{date}.sql"
|
54
|
+
puts "Backing up the db to #{file_name}"
|
55
|
+
`mysqldump -u #{@db_user} -p#{@db_password} #{@db_name} > #{file_name}`
|
56
|
+
upload_file file_name
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
|
data/lib/cloud_backup.rb
ADDED
data/lib/settings.yml
ADDED
data/spec/dumper_spec.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require_relative '../lib/cloud_backup/dumper'
|
3
|
+
|
4
|
+
describe 'Dumper' do
|
5
|
+
|
6
|
+
before { @settings_path = File.join(File.dirname(__FILE__), '../lib/settings.yml') }
|
7
|
+
|
8
|
+
it 'should have settings.yml' do
|
9
|
+
expect(File).to exist(@settings_path)
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'setting values' do
|
13
|
+
before do
|
14
|
+
@settings = YAML.load_file(@settings_path)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should have app key' do
|
18
|
+
expect(@settings['dropbox']['app_key']).not_to be_nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should have app secret' do
|
22
|
+
expect(@settings['dropbox']['app_secret']).not_to be_nil
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should have db user' do
|
26
|
+
expect(@settings['database']['db_user']).not_to be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should have db name' do
|
30
|
+
expect(@settings['database']['db_name']).not_to be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should have db password' do
|
34
|
+
expect(@settings['database']['db_password']).not_to be_nil
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
|
+
config.run_all_when_everything_filtered = true
|
10
|
+
config.filter_run :focus
|
11
|
+
|
12
|
+
# Run specs in random order to surface order dependencies. If you find an
|
13
|
+
# order dependency and want to debug it, you can fix the order by providing
|
14
|
+
# the seed, which is printed after each run.
|
15
|
+
# --seed 1234
|
16
|
+
config.order = 'random'
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cloud_backup
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Serdar Dogruyol
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-06-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dropbox-sdk
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Backup files and database dumps to Cloud.
|
70
|
+
email:
|
71
|
+
- dogruyolserdar@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- Gemfile
|
78
|
+
- LICENSE.txt
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- cloud_backup.gemspec
|
82
|
+
- lib/cloud_backup.rb
|
83
|
+
- lib/cloud_backup/cli.rb
|
84
|
+
- lib/cloud_backup/dumper.rb
|
85
|
+
- lib/cloud_backup/version.rb
|
86
|
+
- lib/settings.yml
|
87
|
+
- spec/dumper_spec.rb
|
88
|
+
- spec/spec_helper.rb
|
89
|
+
homepage: ''
|
90
|
+
licenses:
|
91
|
+
- MIT
|
92
|
+
metadata: {}
|
93
|
+
post_install_message:
|
94
|
+
rdoc_options: []
|
95
|
+
require_paths:
|
96
|
+
- lib
|
97
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
requirements: []
|
108
|
+
rubyforge_project:
|
109
|
+
rubygems_version: 2.2.2
|
110
|
+
signing_key:
|
111
|
+
specification_version: 4
|
112
|
+
summary: Backup files and database dumps to Cloud.
|
113
|
+
test_files:
|
114
|
+
- spec/dumper_spec.rb
|
115
|
+
- spec/spec_helper.rb
|