snatchdb 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/snatch +9 -2
- data/lib/snatch/session.rb +6 -5
- data/lib/snatch/version.rb +1 -1
- data/lib/snatch.rb +4 -0
- metadata +3 -24
data/bin/snatch
CHANGED
@@ -11,6 +11,7 @@ require 'snatch'
|
|
11
11
|
SAMPLE_SCHEMA = <<END
|
12
12
|
---
|
13
13
|
host: YOUR_HOSTNAME
|
14
|
+
port: 22
|
14
15
|
user: YOUR_SSH_USER
|
15
16
|
password: YOUR_SSH_PASSWORD
|
16
17
|
db_user: MYSQL_USER
|
@@ -44,9 +45,15 @@ begin
|
|
44
45
|
optparse.parse!
|
45
46
|
|
46
47
|
unless ARGV.empty?
|
47
|
-
|
48
|
+
filename = ARGV.shift.strip
|
49
|
+
if File.extname(filename).empty?
|
50
|
+
file = File.join(Snatch.root, "#{filename}.yml")
|
51
|
+
else
|
52
|
+
file = File.expand_path(filename)
|
53
|
+
end
|
54
|
+
|
48
55
|
unless File.exists?(file)
|
49
|
-
puts "File #{file} was not found!"
|
56
|
+
puts "File \"#{file}\" was not found!"
|
50
57
|
exit
|
51
58
|
end
|
52
59
|
|
data/lib/snatch/session.rb
CHANGED
@@ -7,6 +7,7 @@ module Snatch
|
|
7
7
|
|
8
8
|
def initialize(config)
|
9
9
|
@config = config
|
10
|
+
@config[:port] = config[:port] || 22
|
10
11
|
@ssh = nil
|
11
12
|
@filename = "#{@config[:host]}_#{Time.now.strftime("%Y%m%d%H%M%S")}.sql.gz"
|
12
13
|
end
|
@@ -26,7 +27,7 @@ module Snatch
|
|
26
27
|
def connect
|
27
28
|
puts "ssh: connecting..."
|
28
29
|
begin
|
29
|
-
@ssh = Net::SSH.start(@config[:host], @config[:user]
|
30
|
+
@ssh = Net::SSH.start(@config[:host], @config[:user], :port => @config[:port], :password => @config[:password])
|
30
31
|
rescue Net::SSH::AuthenticationFailed
|
31
32
|
raise CredentialsError, 'Invalid SSH user or password'
|
32
33
|
end
|
@@ -58,11 +59,11 @@ module Snatch
|
|
58
59
|
def dump
|
59
60
|
cmd = []
|
60
61
|
cmd << "--user=#{@config[:db_user]}"
|
61
|
-
cmd << "--password=#{@config[:db_password]}" unless @config[:db_password].strip.empty?
|
62
|
-
cmd << "--databases #{@config[:db_list].join(' ')}"
|
62
|
+
cmd << "--password=#{@config[:db_password]}" unless @config[:db_password].to_s.strip.empty?
|
63
63
|
cmd << "--add-drop-database"
|
64
64
|
cmd << "--add-drop-table"
|
65
65
|
cmd << "--compact"
|
66
|
+
cmd << "--databases #{@config[:db_list].join(' ')}"
|
66
67
|
cmd = "mysqldump #{cmd.join(' ')} | gzip --best > /tmp/#{filename}"
|
67
68
|
|
68
69
|
puts "mysql: creating a dump..."
|
@@ -77,7 +78,7 @@ module Snatch
|
|
77
78
|
|
78
79
|
# Fetch remote dump to local filesystem
|
79
80
|
def download
|
80
|
-
Net::SFTP.start(@config[:host], @config[:user], :password => @config[:password]) do |sftp|
|
81
|
+
Net::SFTP.start(@config[:host], @config[:user], :port => @config[:port], :password => @config[:password]) do |sftp|
|
81
82
|
t = sftp.download!(
|
82
83
|
"/tmp/#{filename}", # Remote file
|
83
84
|
"#{Dir.pwd}/#{filename}", # Local file
|
@@ -87,4 +88,4 @@ module Snatch
|
|
87
88
|
end
|
88
89
|
end
|
89
90
|
end
|
90
|
-
end
|
91
|
+
end
|
data/lib/snatch/version.rb
CHANGED
data/lib/snatch.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snatchdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 23
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 0
|
10
|
-
version: 1.0.0
|
5
|
+
version: 1.0.1
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Dan Sosedoff
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-06-14 00:00:00 -05:00
|
19
14
|
default_executable: snatch
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
@@ -26,11 +21,6 @@ dependencies:
|
|
26
21
|
requirements:
|
27
22
|
- - "="
|
28
23
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 63
|
30
|
-
segments:
|
31
|
-
- 2
|
32
|
-
- 0
|
33
|
-
- 24
|
34
24
|
version: 2.0.24
|
35
25
|
type: :runtime
|
36
26
|
version_requirements: *id001
|
@@ -42,11 +32,6 @@ dependencies:
|
|
42
32
|
requirements:
|
43
33
|
- - "="
|
44
34
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 5
|
46
|
-
segments:
|
47
|
-
- 2
|
48
|
-
- 0
|
49
|
-
- 5
|
50
35
|
version: 2.0.5
|
51
36
|
type: :runtime
|
52
37
|
version_requirements: *id002
|
@@ -79,23 +64,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
79
64
|
requirements:
|
80
65
|
- - ">="
|
81
66
|
- !ruby/object:Gem::Version
|
82
|
-
hash: 3
|
83
|
-
segments:
|
84
|
-
- 0
|
85
67
|
version: "0"
|
86
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
69
|
none: false
|
88
70
|
requirements:
|
89
71
|
- - ">="
|
90
72
|
- !ruby/object:Gem::Version
|
91
|
-
hash: 3
|
92
|
-
segments:
|
93
|
-
- 0
|
94
73
|
version: "0"
|
95
74
|
requirements: []
|
96
75
|
|
97
76
|
rubyforge_project:
|
98
|
-
rubygems_version: 1.
|
77
|
+
rubygems_version: 1.6.2
|
99
78
|
signing_key:
|
100
79
|
specification_version: 3
|
101
80
|
summary: Snatch is a remote database downloader via SSH protocol
|