bigbackup 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +68 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +38 -0
- data/README.rdoc +21 -0
- data/Rakefile +6 -0
- data/bigbackup.gemspec +27 -0
- data/bin/bigbackup.rb +26 -0
- data/config/bigbackup.yml +29 -0
- data/lib/big_backup.rb +39 -0
- data/lib/big_backup/archive.rb +29 -0
- data/lib/big_backup/base.rb +115 -0
- data/lib/big_backup/databases/base.rb +59 -0
- data/lib/big_backup/databases/mongodb.rb +30 -0
- data/lib/big_backup/databases/mysql.rb +29 -0
- data/lib/big_backup/uploader/base.rb +23 -0
- data/lib/big_backup/uploader/ftp.rb +29 -0
- data/lib/big_backup/version.rb +3 -0
- data/spec/lib/archive_spec.rb +21 -0
- data/spec/lib/base_spec.rb +16 -0
- data/spec/lib/databases/base_spec.rb +14 -0
- data/spec/lib/databases/mongodb_spec.rb +14 -0
- data/spec/lib/databases/mysql_spec.rb +14 -0
- data/spec/lib/uploader/ftp_spec.rb +9 -0
- data/spec/spec_helper.rb +11 -0
- metadata +117 -0
data/.gitignore
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
#----------------------------------------------------------------------------
|
2
|
+
# Ignore these files when commiting to a git repository
|
3
|
+
#----------------------------------------------------------------------------
|
4
|
+
|
5
|
+
# bundler state
|
6
|
+
/.bundle
|
7
|
+
/vendor/bundle/
|
8
|
+
|
9
|
+
# minimal Rails specific artifacts
|
10
|
+
db/*.sqlite3
|
11
|
+
/log/*
|
12
|
+
tmp/*
|
13
|
+
|
14
|
+
# various artifacts
|
15
|
+
**.war
|
16
|
+
*.rbc
|
17
|
+
*.sassc
|
18
|
+
.rspec
|
19
|
+
.sass-cache
|
20
|
+
/config/config.yml
|
21
|
+
/config/database.yml
|
22
|
+
/coverage.data
|
23
|
+
/coverage/
|
24
|
+
/db/*.javadb/
|
25
|
+
/db/*.sqlite3-journal
|
26
|
+
/doc/api/
|
27
|
+
/doc/app/
|
28
|
+
/doc/features.html
|
29
|
+
/doc/specs.html
|
30
|
+
/public/cache
|
31
|
+
/public/stylesheets/compiled
|
32
|
+
/public/system
|
33
|
+
/spec/tmp/*
|
34
|
+
/cache
|
35
|
+
/capybara*
|
36
|
+
/capybara-*.html
|
37
|
+
/gems
|
38
|
+
/rerun.txt
|
39
|
+
/spec/requests
|
40
|
+
/spec/routing
|
41
|
+
/spec/views
|
42
|
+
/specifications
|
43
|
+
|
44
|
+
# scm revert files
|
45
|
+
**.orig
|
46
|
+
|
47
|
+
# Mac finder artifacts
|
48
|
+
.DS_Store
|
49
|
+
|
50
|
+
# Netbeans project directory
|
51
|
+
/nbproject/
|
52
|
+
|
53
|
+
# RubyMine project directory
|
54
|
+
.idea
|
55
|
+
|
56
|
+
# Textmate project files
|
57
|
+
/*.tmpproj
|
58
|
+
|
59
|
+
# vim artifacts
|
60
|
+
**.swp
|
61
|
+
|
62
|
+
|
63
|
+
public/uploads
|
64
|
+
non_public
|
65
|
+
uploads
|
66
|
+
|
67
|
+
# CI reports
|
68
|
+
reports
|
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.2
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
bigbackup (1.0.0)
|
5
|
+
activesupport
|
6
|
+
mail
|
7
|
+
rainbow
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: http://rubygems.org/
|
11
|
+
specs:
|
12
|
+
activesupport (3.0.7)
|
13
|
+
diff-lcs (1.1.2)
|
14
|
+
i18n (0.5.0)
|
15
|
+
mail (2.3.0)
|
16
|
+
i18n (>= 0.4.0)
|
17
|
+
mime-types (~> 1.16)
|
18
|
+
treetop (~> 1.4.8)
|
19
|
+
mime-types (1.16)
|
20
|
+
polyglot (0.3.1)
|
21
|
+
rainbow (1.1.1)
|
22
|
+
rspec (2.6.0)
|
23
|
+
rspec-core (~> 2.6.0)
|
24
|
+
rspec-expectations (~> 2.6.0)
|
25
|
+
rspec-mocks (~> 2.6.0)
|
26
|
+
rspec-core (2.6.0)
|
27
|
+
rspec-expectations (2.6.0)
|
28
|
+
diff-lcs (~> 1.1.2)
|
29
|
+
rspec-mocks (2.6.0)
|
30
|
+
treetop (1.4.9)
|
31
|
+
polyglot (>= 0.3.1)
|
32
|
+
|
33
|
+
PLATFORMS
|
34
|
+
ruby
|
35
|
+
|
36
|
+
DEPENDENCIES
|
37
|
+
bigbackup!
|
38
|
+
rspec
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
data/bigbackup.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
require File.expand_path("../lib", __FILE__)+ "/big_backup/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "bigbackup"
|
8
|
+
s.version = BigBackupInfo::VERSION
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
s.authors = ["Alexander Klaiber"]
|
11
|
+
s.email = ["alex.klaiber@gmail.com"]
|
12
|
+
s.homepage = ""
|
13
|
+
s.summary = %q{BigBackup is a multi backup tool.}
|
14
|
+
s.description = s.summary
|
15
|
+
|
16
|
+
s.rubyforge_project = "big_backup"
|
17
|
+
|
18
|
+
s.add_development_dependency "rspec"
|
19
|
+
s.add_dependency 'activesupport'
|
20
|
+
s.add_dependency 'mail'
|
21
|
+
s.add_dependency 'rainbow'
|
22
|
+
|
23
|
+
s.files = `git ls-files`.split("\n")
|
24
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
25
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
26
|
+
s.require_paths = ["lib"]
|
27
|
+
end
|
data/bin/bigbackup.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/../lib/big_backup"
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
|
5
|
+
OptionParser.new do |opts|
|
6
|
+
opts.banner = "Usage: big_backup.rb [@options]"
|
7
|
+
|
8
|
+
opts.on("-c", "--config [CONFIGPATH]", String, "Path to Back Config yml (default : #{BigBackup.config_path})") do |config_path|
|
9
|
+
BigBackup.config_path = config_path
|
10
|
+
end
|
11
|
+
|
12
|
+
opts.separator ""
|
13
|
+
opts.separator "Common options:"
|
14
|
+
|
15
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
16
|
+
puts opts
|
17
|
+
exit
|
18
|
+
end
|
19
|
+
|
20
|
+
opts.on_tail("--version", "Show version") do
|
21
|
+
puts BigBackupInfo::VERSION
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
end.parse!
|
25
|
+
|
26
|
+
BigBackup.run
|
@@ -0,0 +1,29 @@
|
|
1
|
+
tmpdir : /tmp
|
2
|
+
|
3
|
+
backup_server:
|
4
|
+
ftp:
|
5
|
+
ip: 127.0.0.1
|
6
|
+
user: user
|
7
|
+
passwd: password
|
8
|
+
|
9
|
+
|
10
|
+
directories:
|
11
|
+
- /home/aklaiber/bin
|
12
|
+
|
13
|
+
databases:
|
14
|
+
mongodb:
|
15
|
+
bonayou_development:
|
16
|
+
host: localhost
|
17
|
+
database: bonayou_development
|
18
|
+
|
19
|
+
freecent-development:
|
20
|
+
host: localhost
|
21
|
+
database: freecent-development
|
22
|
+
|
23
|
+
|
24
|
+
mysql:
|
25
|
+
comunio_de:
|
26
|
+
host: localhost
|
27
|
+
database: comunio_de
|
28
|
+
username: root
|
29
|
+
password: Ac$23hBx
|
data/lib/big_backup.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
|
3
|
+
require 'active_support/core_ext'
|
4
|
+
require "yaml"
|
5
|
+
require 'rainbow'
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
require "#{File.dirname(__FILE__)}/big_backup/base"
|
9
|
+
|
10
|
+
require "#{File.dirname(__FILE__)}/big_backup/archive"
|
11
|
+
|
12
|
+
require "#{File.dirname(__FILE__)}/big_backup/databases/base"
|
13
|
+
require "#{File.dirname(__FILE__)}/big_backup/databases/mysql"
|
14
|
+
require "#{File.dirname(__FILE__)}/big_backup/databases/mongodb"
|
15
|
+
|
16
|
+
require "#{File.dirname(__FILE__)}/big_backup/uploader/base"
|
17
|
+
require "#{File.dirname(__FILE__)}/big_backup/uploader/ftp"
|
18
|
+
|
19
|
+
module BigBackup
|
20
|
+
|
21
|
+
@@options = {}
|
22
|
+
@@options[:config_path] = "/usr/local/etc/bigbackup/bigbackup.yml"
|
23
|
+
@@options[:mail_config_path] = "/usr/local/etc/bigbackup/bigbackup_mail.yml"
|
24
|
+
|
25
|
+
def self.config_path=(config_path)
|
26
|
+
@@options[:config_path] = config_path
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.config_path
|
30
|
+
@@options[:config_path]
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.run
|
34
|
+
Base.new.start
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module BigBackup
|
2
|
+
class Archive
|
3
|
+
|
4
|
+
def initialize(config)
|
5
|
+
@config = config
|
6
|
+
end
|
7
|
+
|
8
|
+
def build_cmd(timestamp = nil)
|
9
|
+
cmd_line = String.new
|
10
|
+
if @config.kind_of?(Array)
|
11
|
+
@config.each do |dir|
|
12
|
+
cmd_line << " && " unless cmd_line.empty?
|
13
|
+
cmd_line << "tar -czf /tmp/bigbackup/#{File.basename(dir)}.tar.gz #{dir} > /dev/null 2>&1"
|
14
|
+
end
|
15
|
+
elsif @config.kind_of?(Hash)
|
16
|
+
@config.each_key do |database_name|
|
17
|
+
cmd_line << " && " unless cmd_line.empty?
|
18
|
+
unless timestamp.blank?
|
19
|
+
cmd_line << "tar -czf /tmp/bigbackup/#{database_name}_#{timestamp}.tar.gz /tmp/bigbackup/#{database_name}_#{timestamp} > /dev/null 2>&1"
|
20
|
+
else
|
21
|
+
cmd_line << "tar -czf /tmp/bigbackup/#{database_name}.tar.gz /tmp/bigbackup/#{database_name} > /dev/null 2>&1"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
cmd_line
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
module BigBackup
|
2
|
+
class Base
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@current_time = Time.now.strftime("%Y.%m.%d")
|
6
|
+
end
|
7
|
+
|
8
|
+
def start_message(message)
|
9
|
+
puts "\nStart".bright+" -> #{message}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def ok_message(message)
|
13
|
+
puts "OK".color(:green).bright+" -> #{message}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def error_message(message)
|
17
|
+
puts "ERROR".color(:red).bright+" -> #{message}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def exec_cmd(line)
|
21
|
+
system(line)
|
22
|
+
if $?.exitstatus > 0
|
23
|
+
error_message(line)
|
24
|
+
else
|
25
|
+
ok_message(line)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def backup_config
|
30
|
+
if File.exists?(BigBackup.config_path)
|
31
|
+
@backup_config ||= YAML.load_file(BigBackup.config_path)
|
32
|
+
else
|
33
|
+
@backup_config ||= YAML.load_file("#{File.dirname(__FILE__)}/../../config/bigbackup.yml")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def backup_databases
|
38
|
+
puts "\nCreate Backups".bright.color(:cyan)
|
39
|
+
self.backup_config['databases'].each do |type, config|
|
40
|
+
cmd_line = BigBackup::Database::Base.build(type, config).build_cmd(@current_time)
|
41
|
+
unless cmd_line.blank?
|
42
|
+
start_message(cmd_line)
|
43
|
+
exec_cmd(cmd_line)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def archive_databases
|
49
|
+
puts "\nArchive Backups".bright.color(:cyan)
|
50
|
+
self.backup_config['databases'].each do |type, config|
|
51
|
+
cmd_line = BigBackup::Archive.new(config).build_cmd(@current_time) + " > /dev/null 2>&1"
|
52
|
+
unless cmd_line.blank?
|
53
|
+
start_message(cmd_line)
|
54
|
+
exec_cmd(cmd_line)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def upload_databases
|
60
|
+
if self.backup_config.include?('backup_server')
|
61
|
+
puts "\nUpload Backups".bright.color(:cyan)
|
62
|
+
self.backup_config['databases'].each do |type, config|
|
63
|
+
start_message("upload #{type} backups")
|
64
|
+
begin
|
65
|
+
BigBackup::Uploader::Base.build(:ftp, config).upload(type, @current_time)
|
66
|
+
ok_message("database backups uploaded")
|
67
|
+
rescue Errno::ECONNREFUSED
|
68
|
+
error_message("Can't connect to FTP Server")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def archive_directories
|
75
|
+
puts "\nCreate directories backups".bright.color(:cyan)
|
76
|
+
cmd_line = BigBackup::Archive.new(self.backup_config['directories']).build_cmd + " > /dev/null 2>&1"
|
77
|
+
unless cmd_line.blank?
|
78
|
+
start_message(cmd_line)
|
79
|
+
exec_cmd(cmd_line)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def upload_directories
|
84
|
+
if self.backup_config.include?('backup_server')
|
85
|
+
puts "\nUpload directories Backups".bright.color(:cyan)
|
86
|
+
start_message("upload directorie backups")
|
87
|
+
begin
|
88
|
+
BigBackup::Uploader::Base.build(:ftp, self.backup_config['directories']).upload("directories_backup", @current_time)
|
89
|
+
ok_message("directories uploaded")
|
90
|
+
rescue Errno::ECONNREFUSED
|
91
|
+
error_message("Can't connect to FTP Server")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def start
|
97
|
+
FileUtils.rm_rf "/tmp/bigbackup"
|
98
|
+
Dir.mkdir "/tmp/bigbackup"
|
99
|
+
if File.directory?("/tmp/bigbackup")
|
100
|
+
puts "\nStart BigBackup \n".color(:green).bright
|
101
|
+
if self.backup_config.include?('databases')
|
102
|
+
self.backup_databases
|
103
|
+
self.archive_databases
|
104
|
+
self.upload_databases
|
105
|
+
end
|
106
|
+
if self.backup_config.include?('directories')
|
107
|
+
self.archive_directories
|
108
|
+
self.upload_directories
|
109
|
+
end
|
110
|
+
puts "\nStop BigBackup \n".color(:green).bright
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module BigBackup
|
2
|
+
module Database
|
3
|
+
class Base
|
4
|
+
|
5
|
+
def initialize(config)
|
6
|
+
@config = config
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.build(type, config)
|
10
|
+
"BigBackup::Database::#{type.to_s.classify}".constantize.new(config)
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
def database_system
|
16
|
+
raise "Please define the database system"
|
17
|
+
end
|
18
|
+
|
19
|
+
def cmd_options
|
20
|
+
raise "Please define the cmd options"
|
21
|
+
end
|
22
|
+
|
23
|
+
def cmd_line(backup_name, database_config, timestamp)
|
24
|
+
raise "Please define the cmd line"
|
25
|
+
end
|
26
|
+
|
27
|
+
public
|
28
|
+
|
29
|
+
def build_cmd(timestamp)
|
30
|
+
str = String.new
|
31
|
+
@config.each do |database, config|
|
32
|
+
str << " && " unless str.empty?
|
33
|
+
str << self.cmd_line(database, config, timestamp)
|
34
|
+
end
|
35
|
+
str;
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def build_cmd_options(database_config)
|
41
|
+
options_line = String.new
|
42
|
+
database_config.each do |key, value|
|
43
|
+
if self.cmd_options.include?(key)
|
44
|
+
case key
|
45
|
+
when 'password'
|
46
|
+
options_line << "#{self.cmd_options[key]}'#{value}' "
|
47
|
+
when 'username'
|
48
|
+
options_line << "#{self.cmd_options[key]} #{value} "
|
49
|
+
else
|
50
|
+
options_line << "#{self.cmd_options[key]} #{value} "
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
options_line
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module BigBackup
|
2
|
+
module Database
|
3
|
+
class Mongodb < Base
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
def database_system
|
8
|
+
"mongodb"
|
9
|
+
end
|
10
|
+
|
11
|
+
def cmd_options
|
12
|
+
cmd_options = {}
|
13
|
+
cmd_options["host"] = '-h'
|
14
|
+
cmd_options["database"] = '-d'
|
15
|
+
cmd_options["password"] = '-p'
|
16
|
+
cmd_options["username"] = '-u'
|
17
|
+
return cmd_options
|
18
|
+
end
|
19
|
+
|
20
|
+
def cmd_line(backup_name, database_config, filename)
|
21
|
+
"mongodump #{build_cmd_options(database_config)}-o /tmp/bigbackup/#{backup_name}_#{filename} > /dev/null 2>&1"
|
22
|
+
end
|
23
|
+
|
24
|
+
def backup_dir
|
25
|
+
"mongodb"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module BigBackup
|
2
|
+
module Database
|
3
|
+
class Mysql < Base
|
4
|
+
|
5
|
+
protected
|
6
|
+
|
7
|
+
def database_system
|
8
|
+
"mysql"
|
9
|
+
end
|
10
|
+
|
11
|
+
def cmd_options
|
12
|
+
cmd_options = {}
|
13
|
+
cmd_options["host"] = '-h'
|
14
|
+
cmd_options["password"] = '-p'
|
15
|
+
cmd_options["username"] = '-u'
|
16
|
+
return cmd_options
|
17
|
+
end
|
18
|
+
|
19
|
+
def cmd_line(backup_name, database_config, timestamp)
|
20
|
+
"mysqldump #{database_config['database']} #{build_cmd_options(database_config)}> /tmp/bigbackup/#{backup_name}_#{timestamp}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def backup_dir
|
24
|
+
"mysql"
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "net/ftp"
|
2
|
+
|
3
|
+
module BigBackup
|
4
|
+
module Uploader
|
5
|
+
class Base
|
6
|
+
def initialize(config)
|
7
|
+
@config = config
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.build(type, config)
|
11
|
+
"BigBackup::Uploader::#{type.to_s.classify}".constantize.new(config)
|
12
|
+
end
|
13
|
+
|
14
|
+
def uploader_config
|
15
|
+
if File.exists?(BigBackup.config_path)
|
16
|
+
@backup_config ||= YAML.load_file(BigBackup.config_path)['backup_server']
|
17
|
+
else
|
18
|
+
@backup_config ||= YAML.load_file("#{File.dirname(__FILE__)}/../../../config/bigbackup.yml")['backup_server']
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module BigBackup
|
2
|
+
module Uploader
|
3
|
+
class Ftp < Base
|
4
|
+
|
5
|
+
def initialize(config)
|
6
|
+
super(config)
|
7
|
+
@ftp_config = self.uploader_config['ftp']
|
8
|
+
end
|
9
|
+
|
10
|
+
def upload(backup_dir, timestamp)
|
11
|
+
Net::FTP.open(@ftp_config["ip"]) do |connection|
|
12
|
+
connection.login(@ftp_config["user"].to_s, @ftp_config["passwd"])
|
13
|
+
|
14
|
+
if @config.kind_of?(Array)
|
15
|
+
@config.each do |dir|
|
16
|
+
connection.put("/tmp/bigbackup/#{File.basename(dir)}.tar.gz", "#{backup_dir}/#{File.basename(dir)}.tar.gz")
|
17
|
+
end
|
18
|
+
elsif @config.kind_of?(Hash)
|
19
|
+
@config.each_key do |database_name|
|
20
|
+
connection.put("/tmp/bigbackup/#{database_name}_#{timestamp}.tar.gz", "#{backup_dir}/#{database_name}_#{timestamp}.tar.gz")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BigBackup::Archive do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@backup_config = YAML.load_file("#{File.dirname(__FILE__)}/../../config/bigbackup.yml")
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should return cmd line for directories" do
|
10
|
+
cmd_line = "tar -czf /tmp/test_backup1.tar.gz /tmp/test_backup1 && tar -czf /tmp/test_backup2.tar.gz /tmp/test_backup2"
|
11
|
+
|
12
|
+
BigBackup::Archive.new(@backup_config['directories']).build_cmd.should eql(cmd_line)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return cmd line for databases" do
|
16
|
+
cmd_line = "tar -czf /tmp/mongodb_database_name_1.tar.gz /tmp/mongodb_database_name_1 && tar -czf /tmp/mongodb_database_name_2.tar.gz /tmp/mongodb_database_name_2"
|
17
|
+
|
18
|
+
BigBackup::Archive.new(@backup_config['databases']['mongodb']).build_cmd.should eql(cmd_line)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BigBackup::Base do
|
4
|
+
|
5
|
+
describe "config" do
|
6
|
+
|
7
|
+
it "should load backup config" do
|
8
|
+
big_backup = BigBackup::Base.new
|
9
|
+
|
10
|
+
big_backup.backup_config["tmpdir"].should_not be_empty
|
11
|
+
big_backup.backup_config["tmpdir"].should eql("/tmp")
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BigBackup::Database::Base do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@backup_config = YAML.load_file( "#{File.dirname(__FILE__)}/../../../config/bigbackup.yml" )
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should return backup system" do
|
10
|
+
BigBackup::Database::Base.build(:mysql, @backup_config).class.should eql(BigBackup::Database::Mysql)
|
11
|
+
BigBackup::Database::Base.build(:mongodb, @backup_config).class.should eql(BigBackup::Database::Mongodb)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BigBackup::Database::Mongodb do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@backup_config = YAML.load_file( "#{File.dirname(__FILE__)}/../../../config/bigbackup.yml" )['databases']['mongodb']
|
7
|
+
@cmd_line = "mongodump -d mongodb_database_1 -h localhost -u testuser -p'password' -o /tmp/mongodb_database_name_1_backup && mongodump -d mongodb_database_2 -h localhost -o /tmp/mongodb_database_name_2_backup"
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should return cmd str" do
|
11
|
+
BigBackup::Database::Mongodb.new(@backup_config).build_cmd("backup").should eql(@cmd_line)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BigBackup::Database::Mysql do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@backup_config = YAML.load_file( "#{File.dirname(__FILE__)}/../../../config/bigbackup.yml" )['databases']['mysql']
|
7
|
+
@cmd_line = "mysqldump mysql_database_1 -h localhost -u username -p'password' > /tmp/mysql_database_name_1_123.sql && mysqldump mysql_database_2 -h localhost -u username -p'password' > /tmp/mysql_database_name_2_123.sql"
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should return cmd str" do
|
11
|
+
BigBackup::Database::Mysql.new(@backup_config).build_cmd(123).should eql(@cmd_line)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bigbackup
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Alexander Klaiber
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-05-20 00:00:00.000000000 +02:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rspec
|
17
|
+
requirement: &85993850 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *85993850
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: activesupport
|
28
|
+
requirement: &85993640 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *85993640
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: mail
|
39
|
+
requirement: &85993430 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *85993430
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rainbow
|
50
|
+
requirement: &85993220 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *85993220
|
59
|
+
description: BigBackup is a multi backup tool.
|
60
|
+
email:
|
61
|
+
- alex.klaiber@gmail.com
|
62
|
+
executables:
|
63
|
+
- bigbackup.rb
|
64
|
+
extensions: []
|
65
|
+
extra_rdoc_files: []
|
66
|
+
files:
|
67
|
+
- .gitignore
|
68
|
+
- .rvmrc
|
69
|
+
- Gemfile
|
70
|
+
- Gemfile.lock
|
71
|
+
- README.rdoc
|
72
|
+
- Rakefile
|
73
|
+
- bigbackup.gemspec
|
74
|
+
- bin/bigbackup.rb
|
75
|
+
- config/bigbackup.yml
|
76
|
+
- lib/big_backup.rb
|
77
|
+
- lib/big_backup/archive.rb
|
78
|
+
- lib/big_backup/base.rb
|
79
|
+
- lib/big_backup/databases/base.rb
|
80
|
+
- lib/big_backup/databases/mongodb.rb
|
81
|
+
- lib/big_backup/databases/mysql.rb
|
82
|
+
- lib/big_backup/uploader/base.rb
|
83
|
+
- lib/big_backup/uploader/ftp.rb
|
84
|
+
- lib/big_backup/version.rb
|
85
|
+
- spec/lib/archive_spec.rb
|
86
|
+
- spec/lib/base_spec.rb
|
87
|
+
- spec/lib/databases/base_spec.rb
|
88
|
+
- spec/lib/databases/mongodb_spec.rb
|
89
|
+
- spec/lib/databases/mysql_spec.rb
|
90
|
+
- spec/lib/uploader/ftp_spec.rb
|
91
|
+
- spec/spec_helper.rb
|
92
|
+
has_rdoc: true
|
93
|
+
homepage: ''
|
94
|
+
licenses: []
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ! '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
requirements: []
|
112
|
+
rubyforge_project: big_backup
|
113
|
+
rubygems_version: 1.6.2
|
114
|
+
signing_key:
|
115
|
+
specification_version: 3
|
116
|
+
summary: BigBackup is a multi backup tool.
|
117
|
+
test_files: []
|