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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +19 -0
  3. data/README.md +13 -9
  4. data/bin/docker_test +24 -0
  5. data/lib/backup/archive.rb +31 -32
  6. data/lib/backup/binder.rb +2 -6
  7. data/lib/backup/cleaner.rb +14 -18
  8. data/lib/backup/cli.rb +104 -108
  9. data/lib/backup/cloud_io/base.rb +4 -7
  10. data/lib/backup/cloud_io/cloud_files.rb +60 -62
  11. data/lib/backup/cloud_io/s3.rb +69 -76
  12. data/lib/backup/compressor/base.rb +4 -7
  13. data/lib/backup/compressor/bzip2.rb +3 -7
  14. data/lib/backup/compressor/custom.rb +2 -6
  15. data/lib/backup/compressor/gzip.rb +16 -17
  16. data/lib/backup/config/dsl.rb +16 -17
  17. data/lib/backup/config/helpers.rb +10 -16
  18. data/lib/backup/config.rb +17 -18
  19. data/lib/backup/database/base.rb +22 -21
  20. data/lib/backup/database/mongodb.rb +36 -37
  21. data/lib/backup/database/mysql.rb +40 -41
  22. data/lib/backup/database/openldap.rb +8 -10
  23. data/lib/backup/database/postgresql.rb +29 -30
  24. data/lib/backup/database/redis.rb +27 -30
  25. data/lib/backup/database/riak.rb +15 -18
  26. data/lib/backup/database/sqlite.rb +4 -6
  27. data/lib/backup/encryptor/base.rb +2 -4
  28. data/lib/backup/encryptor/gpg.rb +49 -59
  29. data/lib/backup/encryptor/open_ssl.rb +11 -14
  30. data/lib/backup/errors.rb +7 -12
  31. data/lib/backup/logger/console.rb +5 -8
  32. data/lib/backup/logger/fog_adapter.rb +2 -6
  33. data/lib/backup/logger/logfile.rb +10 -12
  34. data/lib/backup/logger/syslog.rb +2 -4
  35. data/lib/backup/logger.rb +16 -18
  36. data/lib/backup/model.rb +33 -40
  37. data/lib/backup/notifier/base.rb +24 -26
  38. data/lib/backup/notifier/campfire.rb +9 -11
  39. data/lib/backup/notifier/command.rb +0 -3
  40. data/lib/backup/notifier/datadog.rb +9 -12
  41. data/lib/backup/notifier/flowdock.rb +13 -17
  42. data/lib/backup/notifier/hipchat.rb +11 -13
  43. data/lib/backup/notifier/http_post.rb +11 -14
  44. data/lib/backup/notifier/mail.rb +42 -59
  45. data/lib/backup/notifier/nagios.rb +5 -9
  46. data/lib/backup/notifier/pagerduty.rb +10 -12
  47. data/lib/backup/notifier/prowl.rb +15 -15
  48. data/lib/backup/notifier/pushover.rb +7 -10
  49. data/lib/backup/notifier/ses.rb +34 -16
  50. data/lib/backup/notifier/slack.rb +39 -40
  51. data/lib/backup/notifier/twitter.rb +2 -5
  52. data/lib/backup/notifier/zabbix.rb +11 -14
  53. data/lib/backup/package.rb +5 -9
  54. data/lib/backup/packager.rb +16 -17
  55. data/lib/backup/pipeline.rb +17 -21
  56. data/lib/backup/splitter.rb +8 -11
  57. data/lib/backup/storage/base.rb +5 -8
  58. data/lib/backup/storage/cloud_files.rb +21 -23
  59. data/lib/backup/storage/cycler.rb +10 -15
  60. data/lib/backup/storage/dropbox.rb +15 -21
  61. data/lib/backup/storage/ftp.rb +14 -10
  62. data/lib/backup/storage/local.rb +5 -8
  63. data/lib/backup/storage/qiniu.rb +8 -8
  64. data/lib/backup/storage/rsync.rb +24 -26
  65. data/lib/backup/storage/s3.rb +27 -28
  66. data/lib/backup/storage/scp.rb +10 -12
  67. data/lib/backup/storage/sftp.rb +10 -12
  68. data/lib/backup/syncer/base.rb +5 -8
  69. data/lib/backup/syncer/cloud/base.rb +27 -30
  70. data/lib/backup/syncer/cloud/cloud_files.rb +16 -18
  71. data/lib/backup/syncer/cloud/local_file.rb +5 -8
  72. data/lib/backup/syncer/cloud/s3.rb +23 -24
  73. data/lib/backup/syncer/rsync/base.rb +6 -10
  74. data/lib/backup/syncer/rsync/local.rb +1 -5
  75. data/lib/backup/syncer/rsync/pull.rb +6 -10
  76. data/lib/backup/syncer/rsync/push.rb +18 -22
  77. data/lib/backup/template.rb +9 -14
  78. data/lib/backup/utilities.rb +78 -69
  79. data/lib/backup/version.rb +1 -3
  80. data/lib/backup.rb +74 -78
  81. 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 'time'
5
- require 'fileutils'
6
- require 'tempfile'
7
- require 'syslog'
8
- require 'yaml'
9
- require 'etc'
10
- require 'forwardable'
11
- require 'thread'
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 'open4'
14
- require 'thor'
15
- require 'shellwords'
11
+ require "open4"
12
+ require "thor"
13
+ require "shellwords"
16
14
 
17
- require 'excon'
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__), 'backup')
30
- STORAGE_PATH = File.join(LIBRARY_PATH, 'storage')
31
- SYNCER_PATH = File.join(LIBRARY_PATH, 'syncer')
32
- DATABASE_PATH = File.join(LIBRARY_PATH, 'database')
33
- COMPRESSOR_PATH = File.join(LIBRARY_PATH, 'compressor')
34
- ENCRYPTOR_PATH = File.join(LIBRARY_PATH, 'encryptor')
35
- NOTIFIER_PATH = File.join(LIBRARY_PATH, 'notifier')
36
- TEMPLATE_PATH = File.expand_path('../../templates', __FILE__)
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, 'base')
42
- autoload :Cycler, File.join(STORAGE_PATH, 'cycler')
43
- autoload :S3, File.join(STORAGE_PATH, 's3')
44
- autoload :CloudFiles, File.join(STORAGE_PATH, 'cloud_files')
45
- autoload :Ninefold, File.join(STORAGE_PATH, 'ninefold')
46
- autoload :Dropbox, File.join(STORAGE_PATH, 'dropbox')
47
- autoload :FTP, File.join(STORAGE_PATH, 'ftp')
48
- autoload :SFTP, File.join(STORAGE_PATH, 'sftp')
49
- autoload :SCP, File.join(STORAGE_PATH, 'scp')
50
- autoload :RSync, File.join(STORAGE_PATH, 'rsync')
51
- autoload :Local, File.join(STORAGE_PATH, 'local')
52
- autoload :Qiniu, File.join(STORAGE_PATH, 'qiniu')
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, 'base')
55
+ autoload :Base, File.join(SYNCER_PATH, "base")
59
56
  module Cloud
60
- autoload :Base, File.join(SYNCER_PATH, 'cloud', 'base')
61
- autoload :LocalFile, File.join(SYNCER_PATH, 'cloud', 'local_file')
62
- autoload :CloudFiles, File.join(SYNCER_PATH, 'cloud', 'cloud_files')
63
- autoload :S3, File.join(SYNCER_PATH, 'cloud', 's3')
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, 'rsync', 'base')
67
- autoload :Local, File.join(SYNCER_PATH, 'rsync', 'local')
68
- autoload :Push, File.join(SYNCER_PATH, 'rsync', 'push')
69
- autoload :Pull, File.join(SYNCER_PATH, 'rsync', 'pull')
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, 'base')
77
- autoload :MySQL, File.join(DATABASE_PATH, 'mysql')
78
- autoload :PostgreSQL, File.join(DATABASE_PATH, 'postgresql')
79
- autoload :MongoDB, File.join(DATABASE_PATH, 'mongodb')
80
- autoload :Redis, File.join(DATABASE_PATH, 'redis')
81
- autoload :Riak, File.join(DATABASE_PATH, 'riak')
82
- autoload :OpenLDAP, File.join(DATABASE_PATH, 'openldap')
83
- autoload :SQLite, File.join(DATABASE_PATH, 'sqlite')
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, 'base')
90
- autoload :Gzip, File.join(COMPRESSOR_PATH, 'gzip')
91
- autoload :Bzip2, File.join(COMPRESSOR_PATH, 'bzip2')
92
- autoload :Custom, File.join(COMPRESSOR_PATH, 'custom')
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, 'base')
99
- autoload :OpenSSL, File.join(ENCRYPTOR_PATH, 'open_ssl')
100
- autoload :GPG, File.join(ENCRYPTOR_PATH, 'gpg')
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, 'base')
107
- autoload :Mail, File.join(NOTIFIER_PATH, 'mail')
108
- autoload :Twitter, File.join(NOTIFIER_PATH, 'twitter')
109
- autoload :Campfire, File.join(NOTIFIER_PATH, 'campfire')
110
- autoload :Prowl, File.join(NOTIFIER_PATH, 'prowl')
111
- autoload :Hipchat, File.join(NOTIFIER_PATH, 'hipchat')
112
- autoload :PagerDuty, File.join(NOTIFIER_PATH, 'pagerduty')
113
- autoload :Pushover, File.join(NOTIFIER_PATH, 'pushover')
114
- autoload :Slack, File.join(NOTIFIER_PATH, 'slack')
115
- autoload :HttpPost, File.join(NOTIFIER_PATH, 'http_post')
116
- autoload :Nagios, File.join(NOTIFIER_PATH, 'nagios')
117
- autoload :FlowDock, File.join(NOTIFIER_PATH, 'flowdock')
118
- autoload :Zabbix, File.join(NOTIFIER_PATH, 'zabbix')
119
- autoload :DataDog, File.join(NOTIFIER_PATH, 'datadog')
120
- autoload :Ses, File.join(NOTIFIER_PATH, 'ses')
121
- autoload :Command, File.join(NOTIFIER_PATH, 'command')
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
- }.each {|lib| require File.join(LIBRARY_PATH, lib) }
143
-
139
+ ].each { |lib| require File.join(LIBRARY_PATH, lib) }
144
140
  end