snatchdb 1.0.0 → 1.0.1
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/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
|