backupit 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/README CHANGED
@@ -6,8 +6,10 @@ storage :file do
6
6
  end
7
7
 
8
8
  server 'delonghi' do
9
- command "delonghi@10.0.1.1 -p222"
10
- rsync ['/home/www/app/shared/config', '/home/www/app/shared/attachments']
9
+ host "delonghi@10.0.1.1"
10
+ port "222"
11
+
12
+ rsync ['/home/www/app/shared/config',{'/home/staging/app/shared/config' => 'staging_config'}, '/home/www/app/shared/attachments']
11
13
 
12
14
  mysql 'delonghi' do
13
15
  user 'root'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/backupit.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{backupit}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jinzhu"]
@@ -46,8 +46,8 @@ Gem::Specification.new do |s|
46
46
  s.rubygems_version = %q{1.3.7}
47
47
  s.summary = %q{A tool to backup your servers}
48
48
  s.test_files = [
49
- "test/test_backupit.rb",
50
- "test/helper.rb"
49
+ "test/helper.rb",
50
+ "test/test_backupit.rb"
51
51
  ]
52
52
 
53
53
  if s.respond_to? :specification_version then
data/bin/backup CHANGED
@@ -8,7 +8,7 @@ rescue LoadError
8
8
  end
9
9
 
10
10
  require 'optparse'
11
- require 'lib/backup'
11
+ require 'backup'
12
12
 
13
13
  options = {}
14
14
 
@@ -3,7 +3,7 @@ module Backup
3
3
  class Server
4
4
  extend Backup::Attribute
5
5
 
6
- generate_attributes :command,:rsync
6
+ generate_attributes :host, :rsync, :port
7
7
 
8
8
  def mysql(name=nil,&block)
9
9
  @mysqls ||= {}
@@ -15,6 +15,11 @@ module Backup
15
15
  @server_config = @server.config
16
16
  @backup_path = "#{config.path}/#{@server.name}"
17
17
 
18
+ @ssh_host = "'#{@server_config.host}'"
19
+ @scp_host = @server_config.port ? "-P#{@server_config.port} #{@ssh_host}" : @ssh_host
20
+ @rsync_host = @server_config.port ? " -e 'ssh -p#{@server_config.port}' #{@ssh_host}" : @ssh_host
21
+ @ssh_host = "'-p#{@server_config.port}' #{@ssh_host}" if @server_config.port
22
+
18
23
  backup_rsync
19
24
  backup_mysql
20
25
  commit_changes
@@ -25,33 +30,36 @@ module Backup
25
30
  FileUtils.mkdir_p target_path
26
31
 
27
32
  @server_config.rsync.to_a.map do |path|
28
- Backup::Main.run "rsync -rav '#{@server_config.command}:#{path}' '#{target_path}'"
33
+ remote_path = path.is_a?(Hash) ? path.first[0] : path
34
+ target_name = File.basename(path.is_a?(Hash) ? path.first[1] : path)
35
+ Backup::Main.run "rsync -rav #{@rsync_host}:#{remote_path.sub(/\/?$/,'/')} '#{File.join(target_path, target_name)}'"
29
36
  end
30
37
  end
31
38
 
32
39
  def backup_mysql
33
- target_path = File.join(@backup_path, "rsync")
40
+ target_path = File.join(@backup_path, "mysql")
34
41
  FileUtils.mkdir_p target_path
35
42
 
36
43
  @server_config.mysql.map do |key, mysql|
37
44
  mysql_config = ""
38
45
  mysql_config += " -u#{mysql.user}" if mysql.user
39
- mysql_config += " -p#{mysql.user}" if mysql.password
46
+ mysql_config += " -p#{mysql.password}" if mysql.password
40
47
  mysql_config += " --databases #{mysql.databases.to_a.join(' ')}" if mysql.databases
41
48
  mysql_config += " --tables #{mysql.tables.to_a.join(' ')}" if mysql.tables
42
49
  mysql_config += " #{mysql.options}" if mysql.options
43
50
 
44
51
  tmpfile = Tempfile.new('mysql.sql')
45
- Backup::Main.run("ssh '#{@server_config.command}' -c '$(which mysqldump) #{mysql_config} > #{tmpfile.path}'") &&
46
- Backup::Main.run("scp '#{@server_config.command}:#{tmpfile.path}' '#{target_path}/#{key}.sql'") &&
47
- Backup::Main.run("ssh '#{@server_config.command}' -c 'rm #{tmpfile.path}'")
52
+ Backup::Main.run("ssh #{@ssh_host} 'mysqldump #{mysql_config} > #{tmpfile.path}'") &&
53
+ Backup::Main.run("scp #{@scp_host}:#{tmpfile.path} '#{target_path}/#{key}.sql'") &&
54
+ Backup::Main.run("ssh #{@ssh_host} 'rm #{tmpfile.path}'")
48
55
  end
49
56
  end
50
57
 
51
58
  def commit_changes
52
59
  Dir.chdir(@backup_path) do
53
- Backup::Main.run("$(which git) add .")
54
- Backup::Main.run("$(which git) commit -am '#{Time.now.strftime("%Y-%m-%d %H:%M")}'")
60
+ Backup::Main.run("git init") unless system("git status")
61
+ Backup::Main.run("git add .")
62
+ Backup::Main.run("git commit -am '#{Time.now.strftime("%Y-%m-%d %H:%M")}'")
55
63
  end
56
64
  end
57
65
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backupit
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
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
  - Jinzhu
@@ -84,5 +84,5 @@ signing_key:
84
84
  specification_version: 3
85
85
  summary: A tool to backup your servers
86
86
  test_files:
87
- - test/test_backupit.rb
88
87
  - test/helper.rb
88
+ - test/test_backupit.rb