backup 4.4.1 → 5.0.0.beta.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +19 -0
- data/README.md +13 -9
- data/bin/docker_test +24 -0
- data/lib/backup/archive.rb +31 -32
- data/lib/backup/binder.rb +2 -6
- data/lib/backup/cleaner.rb +14 -18
- data/lib/backup/cli.rb +104 -108
- data/lib/backup/cloud_io/base.rb +4 -7
- data/lib/backup/cloud_io/cloud_files.rb +60 -62
- data/lib/backup/cloud_io/s3.rb +69 -76
- data/lib/backup/compressor/base.rb +4 -7
- data/lib/backup/compressor/bzip2.rb +3 -7
- data/lib/backup/compressor/custom.rb +2 -6
- data/lib/backup/compressor/gzip.rb +16 -17
- data/lib/backup/config/dsl.rb +16 -17
- data/lib/backup/config/helpers.rb +10 -16
- data/lib/backup/config.rb +17 -18
- data/lib/backup/database/base.rb +22 -21
- data/lib/backup/database/mongodb.rb +36 -37
- data/lib/backup/database/mysql.rb +40 -41
- data/lib/backup/database/openldap.rb +8 -10
- data/lib/backup/database/postgresql.rb +29 -30
- data/lib/backup/database/redis.rb +27 -30
- data/lib/backup/database/riak.rb +15 -18
- data/lib/backup/database/sqlite.rb +4 -6
- data/lib/backup/encryptor/base.rb +2 -4
- data/lib/backup/encryptor/gpg.rb +49 -59
- data/lib/backup/encryptor/open_ssl.rb +11 -14
- data/lib/backup/errors.rb +7 -12
- data/lib/backup/logger/console.rb +5 -8
- data/lib/backup/logger/fog_adapter.rb +2 -6
- data/lib/backup/logger/logfile.rb +10 -12
- data/lib/backup/logger/syslog.rb +2 -4
- data/lib/backup/logger.rb +16 -18
- data/lib/backup/model.rb +33 -40
- data/lib/backup/notifier/base.rb +24 -26
- data/lib/backup/notifier/campfire.rb +9 -11
- data/lib/backup/notifier/command.rb +0 -3
- data/lib/backup/notifier/datadog.rb +9 -12
- data/lib/backup/notifier/flowdock.rb +13 -17
- data/lib/backup/notifier/hipchat.rb +11 -13
- data/lib/backup/notifier/http_post.rb +11 -14
- data/lib/backup/notifier/mail.rb +42 -59
- data/lib/backup/notifier/nagios.rb +5 -9
- data/lib/backup/notifier/pagerduty.rb +10 -12
- data/lib/backup/notifier/prowl.rb +15 -15
- data/lib/backup/notifier/pushover.rb +7 -10
- data/lib/backup/notifier/ses.rb +34 -16
- data/lib/backup/notifier/slack.rb +39 -40
- data/lib/backup/notifier/twitter.rb +2 -5
- data/lib/backup/notifier/zabbix.rb +11 -14
- data/lib/backup/package.rb +5 -9
- data/lib/backup/packager.rb +16 -17
- data/lib/backup/pipeline.rb +17 -21
- data/lib/backup/splitter.rb +8 -11
- data/lib/backup/storage/base.rb +5 -8
- data/lib/backup/storage/cloud_files.rb +21 -23
- data/lib/backup/storage/cycler.rb +10 -15
- data/lib/backup/storage/dropbox.rb +15 -21
- data/lib/backup/storage/ftp.rb +14 -10
- data/lib/backup/storage/local.rb +5 -8
- data/lib/backup/storage/qiniu.rb +8 -8
- data/lib/backup/storage/rsync.rb +24 -26
- data/lib/backup/storage/s3.rb +27 -28
- data/lib/backup/storage/scp.rb +10 -12
- data/lib/backup/storage/sftp.rb +10 -12
- data/lib/backup/syncer/base.rb +5 -8
- data/lib/backup/syncer/cloud/base.rb +27 -30
- data/lib/backup/syncer/cloud/cloud_files.rb +16 -18
- data/lib/backup/syncer/cloud/local_file.rb +5 -8
- data/lib/backup/syncer/cloud/s3.rb +23 -24
- data/lib/backup/syncer/rsync/base.rb +6 -10
- data/lib/backup/syncer/rsync/local.rb +1 -5
- data/lib/backup/syncer/rsync/pull.rb +6 -10
- data/lib/backup/syncer/rsync/push.rb +18 -22
- data/lib/backup/template.rb +9 -14
- data/lib/backup/utilities.rb +78 -69
- data/lib/backup/version.rb +1 -3
- data/lib/backup.rb +74 -78
- metadata +107 -676
data/lib/backup.rb
CHANGED
@@ -1,20 +1,18 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
# Load Ruby Core Libraries
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
2
|
+
require "time"
|
3
|
+
require "fileutils"
|
4
|
+
require "tempfile"
|
5
|
+
require "syslog"
|
6
|
+
require "yaml"
|
7
|
+
require "etc"
|
8
|
+
require "forwardable"
|
9
|
+
require "thread"
|
12
10
|
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
11
|
+
require "open4"
|
12
|
+
require "thor"
|
13
|
+
require "shellwords"
|
16
14
|
|
17
|
-
require
|
15
|
+
require "excon"
|
18
16
|
# Include response.inspect in error messages.
|
19
17
|
Excon.defaults[:debug_response] = true
|
20
18
|
# Excon should not retry failed requests. We handle that.
|
@@ -23,107 +21,106 @@ Excon.defaults[:middlewares].delete(Excon::Middleware::Idempotent)
|
|
23
21
|
##
|
24
22
|
# The Backup Ruby Gem
|
25
23
|
module Backup
|
26
|
-
|
27
24
|
##
|
28
25
|
# Backup's internal paths
|
29
|
-
LIBRARY_PATH = File.join(File.dirname(__FILE__),
|
30
|
-
STORAGE_PATH = File.join(LIBRARY_PATH,
|
31
|
-
SYNCER_PATH = File.join(LIBRARY_PATH,
|
32
|
-
DATABASE_PATH = File.join(LIBRARY_PATH,
|
33
|
-
COMPRESSOR_PATH = File.join(LIBRARY_PATH,
|
34
|
-
ENCRYPTOR_PATH = File.join(LIBRARY_PATH,
|
35
|
-
NOTIFIER_PATH = File.join(LIBRARY_PATH,
|
36
|
-
TEMPLATE_PATH = File.expand_path(
|
26
|
+
LIBRARY_PATH = File.join(File.dirname(__FILE__), "backup")
|
27
|
+
STORAGE_PATH = File.join(LIBRARY_PATH, "storage")
|
28
|
+
SYNCER_PATH = File.join(LIBRARY_PATH, "syncer")
|
29
|
+
DATABASE_PATH = File.join(LIBRARY_PATH, "database")
|
30
|
+
COMPRESSOR_PATH = File.join(LIBRARY_PATH, "compressor")
|
31
|
+
ENCRYPTOR_PATH = File.join(LIBRARY_PATH, "encryptor")
|
32
|
+
NOTIFIER_PATH = File.join(LIBRARY_PATH, "notifier")
|
33
|
+
TEMPLATE_PATH = File.expand_path("../../templates", __FILE__)
|
37
34
|
|
38
35
|
##
|
39
36
|
# Autoload Backup storage files
|
40
37
|
module Storage
|
41
|
-
autoload :Base, File.join(STORAGE_PATH,
|
42
|
-
autoload :Cycler, File.join(STORAGE_PATH,
|
43
|
-
autoload :S3, File.join(STORAGE_PATH,
|
44
|
-
autoload :CloudFiles, File.join(STORAGE_PATH,
|
45
|
-
autoload :Ninefold, File.join(STORAGE_PATH,
|
46
|
-
autoload :Dropbox, File.join(STORAGE_PATH,
|
47
|
-
autoload :FTP, File.join(STORAGE_PATH,
|
48
|
-
autoload :SFTP, File.join(STORAGE_PATH,
|
49
|
-
autoload :SCP, File.join(STORAGE_PATH,
|
50
|
-
autoload :RSync, File.join(STORAGE_PATH,
|
51
|
-
autoload :Local, File.join(STORAGE_PATH,
|
52
|
-
autoload :Qiniu, File.join(STORAGE_PATH,
|
38
|
+
autoload :Base, File.join(STORAGE_PATH, "base")
|
39
|
+
autoload :Cycler, File.join(STORAGE_PATH, "cycler")
|
40
|
+
autoload :S3, File.join(STORAGE_PATH, "s3")
|
41
|
+
autoload :CloudFiles, File.join(STORAGE_PATH, "cloud_files")
|
42
|
+
autoload :Ninefold, File.join(STORAGE_PATH, "ninefold")
|
43
|
+
autoload :Dropbox, File.join(STORAGE_PATH, "dropbox")
|
44
|
+
autoload :FTP, File.join(STORAGE_PATH, "ftp")
|
45
|
+
autoload :SFTP, File.join(STORAGE_PATH, "sftp")
|
46
|
+
autoload :SCP, File.join(STORAGE_PATH, "scp")
|
47
|
+
autoload :RSync, File.join(STORAGE_PATH, "rsync")
|
48
|
+
autoload :Local, File.join(STORAGE_PATH, "local")
|
49
|
+
autoload :Qiniu, File.join(STORAGE_PATH, "qiniu")
|
53
50
|
end
|
54
51
|
|
55
52
|
##
|
56
53
|
# Autoload Backup syncer files
|
57
54
|
module Syncer
|
58
|
-
autoload :Base, File.join(SYNCER_PATH,
|
55
|
+
autoload :Base, File.join(SYNCER_PATH, "base")
|
59
56
|
module Cloud
|
60
|
-
autoload :Base, File.join(SYNCER_PATH,
|
61
|
-
autoload :LocalFile, File.join(SYNCER_PATH,
|
62
|
-
autoload :CloudFiles, File.join(SYNCER_PATH,
|
63
|
-
autoload :S3, File.join(SYNCER_PATH,
|
57
|
+
autoload :Base, File.join(SYNCER_PATH, "cloud", "base")
|
58
|
+
autoload :LocalFile, File.join(SYNCER_PATH, "cloud", "local_file")
|
59
|
+
autoload :CloudFiles, File.join(SYNCER_PATH, "cloud", "cloud_files")
|
60
|
+
autoload :S3, File.join(SYNCER_PATH, "cloud", "s3")
|
64
61
|
end
|
65
62
|
module RSync
|
66
|
-
autoload :Base, File.join(SYNCER_PATH,
|
67
|
-
autoload :Local, File.join(SYNCER_PATH,
|
68
|
-
autoload :Push, File.join(SYNCER_PATH,
|
69
|
-
autoload :Pull, File.join(SYNCER_PATH,
|
63
|
+
autoload :Base, File.join(SYNCER_PATH, "rsync", "base")
|
64
|
+
autoload :Local, File.join(SYNCER_PATH, "rsync", "local")
|
65
|
+
autoload :Push, File.join(SYNCER_PATH, "rsync", "push")
|
66
|
+
autoload :Pull, File.join(SYNCER_PATH, "rsync", "pull")
|
70
67
|
end
|
71
68
|
end
|
72
69
|
|
73
70
|
##
|
74
71
|
# Autoload Backup database files
|
75
72
|
module Database
|
76
|
-
autoload :Base, File.join(DATABASE_PATH,
|
77
|
-
autoload :MySQL, File.join(DATABASE_PATH,
|
78
|
-
autoload :PostgreSQL, File.join(DATABASE_PATH,
|
79
|
-
autoload :MongoDB, File.join(DATABASE_PATH,
|
80
|
-
autoload :Redis, File.join(DATABASE_PATH,
|
81
|
-
autoload :Riak, File.join(DATABASE_PATH,
|
82
|
-
autoload :OpenLDAP, File.join(DATABASE_PATH,
|
83
|
-
autoload :SQLite, File.join(DATABASE_PATH,
|
73
|
+
autoload :Base, File.join(DATABASE_PATH, "base")
|
74
|
+
autoload :MySQL, File.join(DATABASE_PATH, "mysql")
|
75
|
+
autoload :PostgreSQL, File.join(DATABASE_PATH, "postgresql")
|
76
|
+
autoload :MongoDB, File.join(DATABASE_PATH, "mongodb")
|
77
|
+
autoload :Redis, File.join(DATABASE_PATH, "redis")
|
78
|
+
autoload :Riak, File.join(DATABASE_PATH, "riak")
|
79
|
+
autoload :OpenLDAP, File.join(DATABASE_PATH, "openldap")
|
80
|
+
autoload :SQLite, File.join(DATABASE_PATH, "sqlite")
|
84
81
|
end
|
85
82
|
|
86
83
|
##
|
87
84
|
# Autoload compressor files
|
88
85
|
module Compressor
|
89
|
-
autoload :Base, File.join(COMPRESSOR_PATH,
|
90
|
-
autoload :Gzip, File.join(COMPRESSOR_PATH,
|
91
|
-
autoload :Bzip2, File.join(COMPRESSOR_PATH,
|
92
|
-
autoload :Custom, File.join(COMPRESSOR_PATH,
|
86
|
+
autoload :Base, File.join(COMPRESSOR_PATH, "base")
|
87
|
+
autoload :Gzip, File.join(COMPRESSOR_PATH, "gzip")
|
88
|
+
autoload :Bzip2, File.join(COMPRESSOR_PATH, "bzip2")
|
89
|
+
autoload :Custom, File.join(COMPRESSOR_PATH, "custom")
|
93
90
|
end
|
94
91
|
|
95
92
|
##
|
96
93
|
# Autoload encryptor files
|
97
94
|
module Encryptor
|
98
|
-
autoload :Base, File.join(ENCRYPTOR_PATH,
|
99
|
-
autoload :OpenSSL, File.join(ENCRYPTOR_PATH,
|
100
|
-
autoload :GPG, File.join(ENCRYPTOR_PATH,
|
95
|
+
autoload :Base, File.join(ENCRYPTOR_PATH, "base")
|
96
|
+
autoload :OpenSSL, File.join(ENCRYPTOR_PATH, "open_ssl")
|
97
|
+
autoload :GPG, File.join(ENCRYPTOR_PATH, "gpg")
|
101
98
|
end
|
102
99
|
|
103
100
|
##
|
104
101
|
# Autoload notification files
|
105
102
|
module Notifier
|
106
|
-
autoload :Base, File.join(NOTIFIER_PATH,
|
107
|
-
autoload :Mail, File.join(NOTIFIER_PATH,
|
108
|
-
autoload :Twitter, File.join(NOTIFIER_PATH,
|
109
|
-
autoload :Campfire, File.join(NOTIFIER_PATH,
|
110
|
-
autoload :Prowl, File.join(NOTIFIER_PATH,
|
111
|
-
autoload :Hipchat, File.join(NOTIFIER_PATH,
|
112
|
-
autoload :PagerDuty, File.join(NOTIFIER_PATH,
|
113
|
-
autoload :Pushover, File.join(NOTIFIER_PATH,
|
114
|
-
autoload :Slack, File.join(NOTIFIER_PATH,
|
115
|
-
autoload :HttpPost, File.join(NOTIFIER_PATH,
|
116
|
-
autoload :Nagios, File.join(NOTIFIER_PATH,
|
117
|
-
autoload :FlowDock, File.join(NOTIFIER_PATH,
|
118
|
-
autoload :Zabbix, File.join(NOTIFIER_PATH,
|
119
|
-
autoload :DataDog, File.join(NOTIFIER_PATH,
|
120
|
-
autoload :Ses, File.join(NOTIFIER_PATH,
|
121
|
-
autoload :Command, File.join(NOTIFIER_PATH,
|
103
|
+
autoload :Base, File.join(NOTIFIER_PATH, "base")
|
104
|
+
autoload :Mail, File.join(NOTIFIER_PATH, "mail")
|
105
|
+
autoload :Twitter, File.join(NOTIFIER_PATH, "twitter")
|
106
|
+
autoload :Campfire, File.join(NOTIFIER_PATH, "campfire")
|
107
|
+
autoload :Prowl, File.join(NOTIFIER_PATH, "prowl")
|
108
|
+
autoload :Hipchat, File.join(NOTIFIER_PATH, "hipchat")
|
109
|
+
autoload :PagerDuty, File.join(NOTIFIER_PATH, "pagerduty")
|
110
|
+
autoload :Pushover, File.join(NOTIFIER_PATH, "pushover")
|
111
|
+
autoload :Slack, File.join(NOTIFIER_PATH, "slack")
|
112
|
+
autoload :HttpPost, File.join(NOTIFIER_PATH, "http_post")
|
113
|
+
autoload :Nagios, File.join(NOTIFIER_PATH, "nagios")
|
114
|
+
autoload :FlowDock, File.join(NOTIFIER_PATH, "flowdock")
|
115
|
+
autoload :Zabbix, File.join(NOTIFIER_PATH, "zabbix")
|
116
|
+
autoload :DataDog, File.join(NOTIFIER_PATH, "datadog")
|
117
|
+
autoload :Ses, File.join(NOTIFIER_PATH, "ses")
|
118
|
+
autoload :Command, File.join(NOTIFIER_PATH, "command")
|
122
119
|
end
|
123
120
|
|
124
121
|
##
|
125
122
|
# Require Backup base files
|
126
|
-
%w
|
123
|
+
%w[
|
127
124
|
errors
|
128
125
|
logger
|
129
126
|
utilities
|
@@ -139,6 +136,5 @@ module Backup
|
|
139
136
|
splitter
|
140
137
|
template
|
141
138
|
version
|
142
|
-
|
143
|
-
|
139
|
+
].each { |lib| require File.join(LIBRARY_PATH, lib) }
|
144
140
|
end
|