backupit 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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