backup 3.0.2 → 3.0.3.build.0
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/backup +12 -190
- metadata +7 -191
- data/.gitignore +0 -2
- data/.infinity_test +0 -7
- data/.rspec +0 -3
- data/Gemfile +0 -17
- data/Gemfile.lock +0 -88
- data/LICENSE.md +0 -24
- data/README.md +0 -236
- data/backup.gemspec +0 -41
- data/lib/backup.rb +0 -148
- data/lib/backup/archive.rb +0 -54
- data/lib/backup/cli.rb +0 -50
- data/lib/backup/compressor/base.rb +0 -17
- data/lib/backup/compressor/gzip.rb +0 -61
- data/lib/backup/configuration/base.rb +0 -15
- data/lib/backup/configuration/compressor/base.rb +0 -10
- data/lib/backup/configuration/compressor/gzip.rb +0 -23
- data/lib/backup/configuration/database/base.rb +0 -18
- data/lib/backup/configuration/database/mongodb.rb +0 -37
- data/lib/backup/configuration/database/mysql.rb +0 -37
- data/lib/backup/configuration/database/postgresql.rb +0 -37
- data/lib/backup/configuration/database/redis.rb +0 -35
- data/lib/backup/configuration/encryptor/base.rb +0 -10
- data/lib/backup/configuration/encryptor/gpg.rb +0 -17
- data/lib/backup/configuration/encryptor/open_ssl.rb +0 -26
- data/lib/backup/configuration/helpers.rb +0 -54
- data/lib/backup/configuration/notifier/base.rb +0 -39
- data/lib/backup/configuration/notifier/mail.rb +0 -52
- data/lib/backup/configuration/storage/base.rb +0 -18
- data/lib/backup/configuration/storage/cloudfiles.rb +0 -21
- data/lib/backup/configuration/storage/dropbox.rb +0 -25
- data/lib/backup/configuration/storage/ftp.rb +0 -25
- data/lib/backup/configuration/storage/rsync.rb +0 -25
- data/lib/backup/configuration/storage/s3.rb +0 -25
- data/lib/backup/configuration/storage/scp.rb +0 -25
- data/lib/backup/configuration/storage/sftp.rb +0 -25
- data/lib/backup/database/base.rb +0 -33
- data/lib/backup/database/mongodb.rb +0 -137
- data/lib/backup/database/mysql.rb +0 -104
- data/lib/backup/database/postgresql.rb +0 -111
- data/lib/backup/database/redis.rb +0 -105
- data/lib/backup/encryptor/base.rb +0 -17
- data/lib/backup/encryptor/gpg.rb +0 -78
- data/lib/backup/encryptor/open_ssl.rb +0 -67
- data/lib/backup/finder.rb +0 -39
- data/lib/backup/logger.rb +0 -80
- data/lib/backup/model.rb +0 -249
- data/lib/backup/notifier/base.rb +0 -29
- data/lib/backup/notifier/binder.rb +0 -32
- data/lib/backup/notifier/mail.rb +0 -141
- data/lib/backup/notifier/templates/notify_failure.erb +0 -31
- data/lib/backup/notifier/templates/notify_success.erb +0 -16
- data/lib/backup/storage/base.rb +0 -67
- data/lib/backup/storage/cloudfiles.rb +0 -95
- data/lib/backup/storage/dropbox.rb +0 -82
- data/lib/backup/storage/ftp.rb +0 -114
- data/lib/backup/storage/object.rb +0 -45
- data/lib/backup/storage/rsync.rb +0 -100
- data/lib/backup/storage/s3.rb +0 -108
- data/lib/backup/storage/scp.rb +0 -105
- data/lib/backup/storage/sftp.rb +0 -106
- data/lib/backup/version.rb +0 -72
- data/lib/templates/archive +0 -4
- data/lib/templates/compressor/gzip +0 -4
- data/lib/templates/database/mongodb +0 -10
- data/lib/templates/database/mysql +0 -11
- data/lib/templates/database/postgresql +0 -11
- data/lib/templates/database/redis +0 -10
- data/lib/templates/encryptor/gpg +0 -9
- data/lib/templates/encryptor/openssl +0 -5
- data/lib/templates/notifier/mail +0 -14
- data/lib/templates/readme +0 -15
- data/lib/templates/storage/cloudfiles +0 -7
- data/lib/templates/storage/dropbox +0 -8
- data/lib/templates/storage/ftp +0 -8
- data/lib/templates/storage/rsync +0 -7
- data/lib/templates/storage/s3 +0 -8
- data/lib/templates/storage/scp +0 -8
- data/lib/templates/storage/sftp +0 -8
- data/spec/archive_spec.rb +0 -53
- data/spec/backup_spec.rb +0 -11
- data/spec/compressor/gzip_spec.rb +0 -59
- data/spec/configuration/base_spec.rb +0 -35
- data/spec/configuration/compressor/gzip_spec.rb +0 -28
- data/spec/configuration/database/base_spec.rb +0 -16
- data/spec/configuration/database/mongodb_spec.rb +0 -30
- data/spec/configuration/database/mysql_spec.rb +0 -32
- data/spec/configuration/database/postgresql_spec.rb +0 -32
- data/spec/configuration/database/redis_spec.rb +0 -30
- data/spec/configuration/encryptor/gpg_spec.rb +0 -25
- data/spec/configuration/encryptor/open_ssl_spec.rb +0 -31
- data/spec/configuration/notifier/mail_spec.rb +0 -32
- data/spec/configuration/storage/cloudfiles_spec.rb +0 -34
- data/spec/configuration/storage/dropbox_spec.rb +0 -40
- data/spec/configuration/storage/ftp_spec.rb +0 -40
- data/spec/configuration/storage/rsync_spec.rb +0 -37
- data/spec/configuration/storage/s3_spec.rb +0 -37
- data/spec/configuration/storage/scp_spec.rb +0 -40
- data/spec/configuration/storage/sftp_spec.rb +0 -40
- data/spec/database/base_spec.rb +0 -30
- data/spec/database/mongodb_spec.rb +0 -144
- data/spec/database/mysql_spec.rb +0 -150
- data/spec/database/postgresql_spec.rb +0 -164
- data/spec/database/redis_spec.rb +0 -122
- data/spec/encryptor/gpg_spec.rb +0 -57
- data/spec/encryptor/open_ssl_spec.rb +0 -102
- data/spec/logger_spec.rb +0 -37
- data/spec/model_spec.rb +0 -236
- data/spec/notifier/mail_spec.rb +0 -97
- data/spec/spec_helper.rb +0 -21
- data/spec/storage/base_spec.rb +0 -33
- data/spec/storage/cloudfiles_spec.rb +0 -102
- data/spec/storage/dropbox_spec.rb +0 -89
- data/spec/storage/ftp_spec.rb +0 -133
- data/spec/storage/object_spec.rb +0 -74
- data/spec/storage/rsync_spec.rb +0 -115
- data/spec/storage/s3_spec.rb +0 -110
- data/spec/storage/scp_spec.rb +0 -129
- data/spec/storage/sftp_spec.rb +0 -125
- data/spec/version_spec.rb +0 -32
data/lib/backup/archive.rb
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
class Archive
|
|
5
|
-
include Backup::CLI
|
|
6
|
-
|
|
7
|
-
##
|
|
8
|
-
# Stores the name of the archive
|
|
9
|
-
attr_accessor :name
|
|
10
|
-
|
|
11
|
-
##
|
|
12
|
-
# Stores an array of different paths/files to store
|
|
13
|
-
attr_accessor :paths
|
|
14
|
-
|
|
15
|
-
##
|
|
16
|
-
# Stores the path to the archive directory
|
|
17
|
-
attr_accessor :archive_path
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
# Takes the name of the archive and the configuration block
|
|
21
|
-
def initialize(name, &block)
|
|
22
|
-
@name = name.to_sym
|
|
23
|
-
@paths = Array.new
|
|
24
|
-
@archive_path = File.join(TMP_PATH, TRIGGER, 'archive')
|
|
25
|
-
|
|
26
|
-
instance_eval(&block)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
# Adds new paths to the @paths instance variable array
|
|
31
|
-
def add(path)
|
|
32
|
-
@paths << path
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
##
|
|
36
|
-
# Archives all the provided paths in to a single .tar file
|
|
37
|
-
# and places that .tar file in the folder which later will be packaged
|
|
38
|
-
def perform!
|
|
39
|
-
mkdir(archive_path)
|
|
40
|
-
Logger.message("#{ self.class } started packaging and archiving #{ paths.map { |path| "\"#{path}\""}.join(", ") }.")
|
|
41
|
-
run("#{ utility(:tar) } -c #{ paths_to_package } 1> '#{ File.join(archive_path, "#{name}.tar") }' 2> /dev/null")
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
private
|
|
45
|
-
|
|
46
|
-
##
|
|
47
|
-
# Returns a "tar-ready" string of all the specified paths combined
|
|
48
|
-
def paths_to_package
|
|
49
|
-
paths.map do |path|
|
|
50
|
-
"'#{path}'"
|
|
51
|
-
end.join("\s")
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
data/lib/backup/cli.rb
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module CLI
|
|
5
|
-
|
|
6
|
-
##
|
|
7
|
-
# Wrapper method for %x[] to run CL commands
|
|
8
|
-
# through a ruby method. This helps with test coverage and
|
|
9
|
-
# improves readability
|
|
10
|
-
def run(command)
|
|
11
|
-
%x[#{command}]
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
##
|
|
15
|
-
# Wrapper method for FileUtils.mkdir_p to create directories
|
|
16
|
-
# through a ruby method. This helps with test coverage and
|
|
17
|
-
# improves readability
|
|
18
|
-
def mkdir(path)
|
|
19
|
-
FileUtils.mkdir_p(path)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
##
|
|
23
|
-
# Wrapper for the FileUtils.rm_rf to remove files and folders
|
|
24
|
-
# through a ruby method. This helps with test coverage and
|
|
25
|
-
# improves readability
|
|
26
|
-
def rm(path)
|
|
27
|
-
FileUtils.rm_rf(path)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
##
|
|
31
|
-
# Tries to find the full path of the specified utility. If the full
|
|
32
|
-
# path is found, it'll return that. Otherwise it'll just return the
|
|
33
|
-
# name of the utility. If the 'utility_path' is defined, it'll check
|
|
34
|
-
# to see if it isn't an empty string, and if it isn't, it'll go ahead and
|
|
35
|
-
# always use that path rather than auto-detecting it
|
|
36
|
-
def utility(name)
|
|
37
|
-
if respond_to?(:utility_path)
|
|
38
|
-
if utility_path.is_a?(String) and not utility_path.empty?
|
|
39
|
-
return utility_path
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
if path = %x[which #{name}].chomp and not path.empty?
|
|
44
|
-
return path
|
|
45
|
-
end
|
|
46
|
-
name
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
end
|
|
50
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module Compressor
|
|
5
|
-
class Base
|
|
6
|
-
include Backup::CLI
|
|
7
|
-
include Backup::Configuration::Helpers
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
# Logs a message to the console and log file to inform
|
|
11
|
-
# the client that Backup is compressing the archive
|
|
12
|
-
def log!
|
|
13
|
-
Backup::Logger.message "#{ self.class } started compressing the archive."
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module Compressor
|
|
5
|
-
class Gzip < Base
|
|
6
|
-
|
|
7
|
-
##
|
|
8
|
-
# Tells Backup::Compressor::Gzip to compress
|
|
9
|
-
# better rather than faster when set to true
|
|
10
|
-
attr_writer :best
|
|
11
|
-
|
|
12
|
-
##
|
|
13
|
-
# Tells Backup::Compressor::Gzip to compress
|
|
14
|
-
# faster rather than better when set to true
|
|
15
|
-
attr_writer :fast
|
|
16
|
-
|
|
17
|
-
##
|
|
18
|
-
# Creates a new instance of Backup::Compressor::Gzip and
|
|
19
|
-
# configures it to either compress faster or better
|
|
20
|
-
def initialize(&block)
|
|
21
|
-
load_defaults!
|
|
22
|
-
|
|
23
|
-
@best ||= false
|
|
24
|
-
@fast ||= false
|
|
25
|
-
|
|
26
|
-
instance_eval(&block) if block_given?
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
# Performs the compression of the packages backup file
|
|
31
|
-
def perform!
|
|
32
|
-
log!
|
|
33
|
-
run("#{ utility(:gzip) } #{ options } '#{ Backup::Model.file }'")
|
|
34
|
-
Backup::Model.extension += '.gz'
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
private
|
|
38
|
-
|
|
39
|
-
##
|
|
40
|
-
# Combines the provided options and returns a gzip options string
|
|
41
|
-
def options
|
|
42
|
-
(best + fast).join("\s")
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
##
|
|
46
|
-
# Returns the gzip option syntax for compressing
|
|
47
|
-
# better when @best is set to true
|
|
48
|
-
def best
|
|
49
|
-
return ['--best'] if @best; []
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
##
|
|
53
|
-
# Returns the gzip option syntax for compressing
|
|
54
|
-
# faster when @fast is set to true
|
|
55
|
-
def fast
|
|
56
|
-
return ['--fast'] if @fast; []
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module Configuration
|
|
5
|
-
module Compressor
|
|
6
|
-
class Gzip < Base
|
|
7
|
-
class << self
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
# Tells Backup::Compressor::Gzip to compress
|
|
11
|
-
# better rather than faster when set to true
|
|
12
|
-
attr_accessor :best
|
|
13
|
-
|
|
14
|
-
##
|
|
15
|
-
# Tells Backup::Compressor::Gzip to compress
|
|
16
|
-
# faster rather than better when set to true
|
|
17
|
-
attr_accessor :fast
|
|
18
|
-
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module Configuration
|
|
5
|
-
module Database
|
|
6
|
-
class Base < Backup::Configuration::Base
|
|
7
|
-
class << self
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
# Allows the user to specify the path to a "dump" utility
|
|
11
|
-
# in case it cannot be auto-detected by Backup
|
|
12
|
-
attr_accessor :utility_path
|
|
13
|
-
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module Configuration
|
|
5
|
-
module Database
|
|
6
|
-
class MongoDB < Base
|
|
7
|
-
class << self
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
# Name of the database that needs to get dumped
|
|
11
|
-
attr_accessor :name
|
|
12
|
-
|
|
13
|
-
##
|
|
14
|
-
# Credentials for the specified database
|
|
15
|
-
attr_accessor :username, :password
|
|
16
|
-
|
|
17
|
-
##
|
|
18
|
-
# Connectivity options
|
|
19
|
-
attr_accessor :host, :port
|
|
20
|
-
|
|
21
|
-
##
|
|
22
|
-
# IPv6 support (disabled by default)
|
|
23
|
-
attr_accessor :ipv6
|
|
24
|
-
|
|
25
|
-
##
|
|
26
|
-
# Collections to dump, collections that aren't specified won't get dumped
|
|
27
|
-
attr_accessor :only_collections
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
# Additional "mongodump" options
|
|
31
|
-
attr_accessor :additional_options
|
|
32
|
-
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module Configuration
|
|
5
|
-
module Database
|
|
6
|
-
class MySQL < Base
|
|
7
|
-
class << self
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
# Name of the database that needs to get dumped
|
|
11
|
-
attr_accessor :name
|
|
12
|
-
|
|
13
|
-
##
|
|
14
|
-
# Credentials for the specified database
|
|
15
|
-
attr_accessor :username, :password
|
|
16
|
-
|
|
17
|
-
##
|
|
18
|
-
# Connectivity options
|
|
19
|
-
attr_accessor :host, :port, :socket
|
|
20
|
-
|
|
21
|
-
##
|
|
22
|
-
# Tables to skip while dumping the database
|
|
23
|
-
attr_accessor :skip_tables
|
|
24
|
-
|
|
25
|
-
##
|
|
26
|
-
# Tables to dump, tables that aren't specified won't get dumped
|
|
27
|
-
attr_accessor :only_tables
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
# Additional "mysqldump" options
|
|
31
|
-
attr_accessor :additional_options
|
|
32
|
-
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module Configuration
|
|
5
|
-
module Database
|
|
6
|
-
class PostgreSQL < Base
|
|
7
|
-
class << self
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
# Name of the database that needs to get dumped
|
|
11
|
-
attr_accessor :name
|
|
12
|
-
|
|
13
|
-
##
|
|
14
|
-
# Credentials for the specified database
|
|
15
|
-
attr_accessor :username, :password
|
|
16
|
-
|
|
17
|
-
##
|
|
18
|
-
# Connectivity options
|
|
19
|
-
attr_accessor :host, :port, :socket
|
|
20
|
-
|
|
21
|
-
##
|
|
22
|
-
# Tables to skip while dumping the database
|
|
23
|
-
attr_accessor :skip_tables
|
|
24
|
-
|
|
25
|
-
##
|
|
26
|
-
# Tables to dump, tables that aren't specified won't get dumped
|
|
27
|
-
attr_accessor :only_tables
|
|
28
|
-
|
|
29
|
-
##
|
|
30
|
-
# Additional "pg_dump" options
|
|
31
|
-
attr_accessor :additional_options
|
|
32
|
-
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module Configuration
|
|
5
|
-
module Database
|
|
6
|
-
class Redis < Base
|
|
7
|
-
class << self
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
# Name of and path to the database that needs to get dumped
|
|
11
|
-
attr_accessor :name, :path
|
|
12
|
-
|
|
13
|
-
##
|
|
14
|
-
# Credentials for the specified database
|
|
15
|
-
attr_accessor :password
|
|
16
|
-
|
|
17
|
-
##
|
|
18
|
-
# Determines whether Backup should invoke the SAVE command through
|
|
19
|
-
# the 'redis-cli' utility to persist the most recent data before
|
|
20
|
-
# copying over the dump file
|
|
21
|
-
attr_accessor :invoke_save
|
|
22
|
-
|
|
23
|
-
##
|
|
24
|
-
# Connectivity options
|
|
25
|
-
attr_accessor :host, :port, :socket
|
|
26
|
-
|
|
27
|
-
##
|
|
28
|
-
# Additional "redis-cli" options
|
|
29
|
-
attr_accessor :additional_options
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
module Backup
|
|
4
|
-
module Configuration
|
|
5
|
-
module Encryptor
|
|
6
|
-
class OpenSSL < Base
|
|
7
|
-
class << self
|
|
8
|
-
|
|
9
|
-
##
|
|
10
|
-
# The password that'll be used to encrypt the backup. This
|
|
11
|
-
# password will be required to decrypt the backup later on.
|
|
12
|
-
attr_accessor :password
|
|
13
|
-
|
|
14
|
-
##
|
|
15
|
-
# Determines whether the 'base64' should be used or not
|
|
16
|
-
attr_accessor :base64
|
|
17
|
-
|
|
18
|
-
##
|
|
19
|
-
# Determines whether the 'salt' flag should be used
|
|
20
|
-
attr_accessor :salt
|
|
21
|
-
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|