optimacms_backups 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1294d6cbc05795c154ceafef061e3ae64a59e3c7
4
- data.tar.gz: 6be083b51c73662b115452694f33f3db51eda11d
3
+ metadata.gz: dfaf348593d203a00a7c2cb7fd8972f31bb9e2f7
4
+ data.tar.gz: 957d51d343fabcaf07fcfe3f69d5c0caa2914973
5
5
  SHA512:
6
- metadata.gz: 4127760f56bed6fb2d12d3100f21897c860163e493d227e9343346d4279e6df7a481ac0fa66d506d99b9afd1113593f8dffaa9347215cb4f78fc4a9eba931de7
7
- data.tar.gz: 414821928715ab6309f000e4a0abbb5671177fec80eee82024c6823e9fd333e5003c7e235925e60909ef50d50ca9cca55dfdb468f22dab4971b84faeeb17c45e
6
+ metadata.gz: dbda4da685377bb0a0f31878a0a4e860c1f6523e36e4285fd150fd2fd5eb620c9799a1799b372cda8504a7893f54e690f87bbd5d9396fc095dd3c3bb9e978aec
7
+ data.tar.gz: afa11cd3f9b941531cf85cf087d35dad5d3bb826e5516e57e5a2346df977129c78e29ca0ad01ef67df97a690ec0b4e46f623956c72a7002d40bd150705797e30
@@ -0,0 +1,168 @@
1
+ # encoding: utf-8
2
+
3
+ ##
4
+ # Backup v4.x Configuration
5
+ #
6
+ # Documentation: http://backup.github.io/backup
7
+ # Issue Tracker: https://github.com/backup/backup/issues
8
+
9
+ ##
10
+
11
+ require_relative 'init'
12
+
13
+
14
+
15
+
16
+ # Config Options
17
+ #
18
+ # The options here may be overridden on the command line, but the result
19
+ # will depend on the use of --root-path on the command line.
20
+ #
21
+ # If --root-path is used on the command line, then all paths set here
22
+ # will be overridden. If a path (like --tmp-path) is not given along with
23
+ # --root-path, that path will use it's default location _relative to --root-path_.
24
+ #
25
+ # If --root-path is not used on the command line, a path option (like --tmp-path)
26
+ # given on the command line will override the tmp_path set here, but all other
27
+ # paths set here will be used.
28
+ #
29
+ # Note that relative paths given on the command line without --root-path
30
+ # are relative to the current directory. The root_path set here only applies
31
+ # to relative paths set here.
32
+ #
33
+ # ---
34
+ #
35
+ # Sets the root path for all relative paths, including default paths.
36
+ # May be an absolute path, or relative to the current working directory.
37
+ #
38
+ #root_path '.'
39
+
40
+ #
41
+ # Sets the path where backups are processed until they're stored.
42
+ # This must have enough free space to hold apx. 2 backups.
43
+ # May be an absolute path, or relative to the current directory or +root_path+.
44
+ #
45
+ # tmp_path 'my/tmp'
46
+ #
47
+ # Sets the path where backup stores persistent information.
48
+ # When Backup's Cycler is used, small YAML files are stored here.
49
+ # May be an absolute path, or relative to the current directory or +root_path+.
50
+ #
51
+ # data_path 'my/data'
52
+
53
+ ##
54
+ # Utilities
55
+ #
56
+ # If you need to use a utility other than the one Backup detects,
57
+ # or a utility can not be found in your $PATH.
58
+ #
59
+ # Utilities.configure do
60
+ # tar '/usr/bin/gnutar'
61
+ # redis_cli '/opt/redis/redis-cli'
62
+ # end
63
+
64
+ ##
65
+ # Logging
66
+ #
67
+ # Logging options may be set on the command line, but certain settings
68
+ # may only be configured here.
69
+ #
70
+ # Logger.configure do
71
+ # console.quiet = true # Same as command line: --quiet
72
+ # logfile.max_bytes = 2_000_000 # Default: 500_000
73
+ # syslog.enabled = true # Same as command line: --syslog
74
+ # syslog.ident = 'my_app_backup' # Default: 'backup'
75
+ # end
76
+ #
77
+ # Command line options will override those set here.
78
+ # For example, the following would override the example settings above
79
+ # to disable syslog and enable console output.
80
+ # backup perform --trigger my_backup --no-syslog --no-quiet
81
+
82
+ ##
83
+ # Component Defaults
84
+ #
85
+ # Set default options to be applied to components in all models.
86
+ # Options set within a model will override those set here.
87
+
88
+ if $backup_config['s3']
89
+ s3_config = $backup_config['s3']
90
+
91
+ Storage::S3.defaults do |s3|
92
+ s3.access_key_id = s3_config['access_key_id']
93
+ s3.secret_access_key = s3_config['secret_access_key']
94
+ s3.region = s3_config['region']
95
+ s3.bucket = s3_config['bucket']
96
+
97
+ end
98
+ end
99
+
100
+
101
+ Notifier::Mail.defaults do |mail|
102
+ mail.on_success = true
103
+ mail.on_warning = true
104
+ mail.on_failure = true
105
+
106
+ # user
107
+ if $backup_config['notify'] && $backup_config['notify']['mail']
108
+ c = $backup_config['notify']['mail']
109
+
110
+ mail.from = c['from']
111
+ mail.to = c['to']
112
+ #mail.cc = "cc@email.com"
113
+ #mail.bcc = "bcc@email.com"
114
+ mail.reply_to = c['reply_to']
115
+ end
116
+
117
+
118
+
119
+
120
+ if $smtp_config
121
+ c = $smtp_config
122
+
123
+ # smtp
124
+ mail.address = c['address']
125
+ mail.port = c['port']
126
+ mail.domain = c['domain']
127
+ mail.user_name = c['user_name']
128
+ mail.password = c['password']
129
+ mail.authentication = c['authentication']
130
+ mail.encryption = c['encryption']
131
+
132
+ end
133
+
134
+ # mail.address = 'smtp.gmail.com'
135
+ # mail.port = 587
136
+ # mail.domain = 'your.host.name'
137
+ # mail.user_name = 'sender@email.com'
138
+ # mail.password = 'my_password'
139
+ # mail.authentication = 'plain'
140
+ # mail.encryption = :starttls
141
+ end
142
+
143
+ ##
144
+ # Preconfigured Models
145
+ #
146
+ # Create custom models with preconfigured components.
147
+ # Components added within the model definition will
148
+ # +add to+ the preconfigured components.
149
+ #
150
+ # preconfigure 'MyModel' do
151
+ # archive :user_pictures do |archive|
152
+ # archive.add '~/pictures'
153
+ # end
154
+ #
155
+ # notify_by Mail do |mail|
156
+ # mail.to = 'admin@email.com'
157
+ # end
158
+ # end
159
+ #
160
+ # MyModel.new(:john_smith, 'John Smith Backup') do
161
+ # archive :user_music do |archive|
162
+ # archive.add '~/music'
163
+ # end
164
+ #
165
+ # notify_by Mail do |mail|
166
+ # mail.to = 'john.smith@email.com'
167
+ # end
168
+ # end
@@ -0,0 +1,78 @@
1
+ $app_env = ENV['RAILS_ENV'] || ENV['app_env'] || 'development'
2
+ $rails_app_env = $app_env
3
+
4
+
5
+
6
+ root = File.absolute_path(File.dirname(__FILE__))
7
+ current_dir = File.dirname(__FILE__)
8
+
9
+ #
10
+ #$backup_config = YAML.load_file(File.join(current_dir, 'config', "#{$app_env}.yml"))
11
+ #$backup_config = YAML.load_file(File.join(Rails.root, 'config', 'backup', "#{$app_env}.yml"))
12
+ $backup_config = YAML.load_file(File.join(current_dir, '../config/backup', "#{$app_env}.yml"))
13
+ #$backup_config = OptimacmsBackups.backups_config
14
+
15
+ #puts "backup_config: #{$backup_config}"
16
+
17
+ # config - app
18
+ app_path = File.expand_path("../../", __FILE__)+'/'
19
+
20
+ $app_config = {
21
+ path: app_path
22
+ }
23
+
24
+ #puts "app config: #{$app_config}"
25
+
26
+ #
27
+ app_rails_secrets = YAML.load_file("#{$app_config[:path]}config/secrets.yml")[$rails_app_env]
28
+
29
+ # db
30
+ $db_config = app_rails_secrets
31
+
32
+ #puts "db: #{$db_config}"
33
+
34
+
35
+ # smtp
36
+ $smtp_config = app_rails_secrets['smtp']
37
+
38
+
39
+
40
+
41
+ ### helpers
42
+
43
+ def build_storage_local(local, options)
44
+ b = options
45
+
46
+ local.path = "#{b['path']}"
47
+ local.keep = 30
48
+ # local.keep = Time.now - 2592000 # Remove all backups older than 1 month.
49
+ end
50
+
51
+ def build_storage_scp(server, opts)
52
+ b = opts
53
+
54
+ server.username = b['username']
55
+ server.password = b['password']
56
+ server.ip = b['ip']
57
+ server.port = b['port']
58
+ server.path = b['path']
59
+
60
+ # Use a number or a Time object to specify how many backups to keep.
61
+ server.keep = 30
62
+
63
+ # Additional options for the SSH connection.
64
+ # server.ssh_options = {}
65
+
66
+ end
67
+
68
+
69
+ def build_storage_s3(s3, opts)
70
+ b = opts
71
+
72
+ s3_config = $backup_config['s3']
73
+ s3.access_key_id = b['access_key_id'] || s3_config['access_key_id']
74
+ s3.secret_access_key = b['secret_access_key'] || s3_config['secret_access_key']
75
+ s3.region = b['region'] || s3_config['region']
76
+ s3.bucket = b['bucket'] || s3_config['bucket']
77
+ s3.path = b['path'] || s3_config['path']
78
+ end
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+
5
+
6
+ Model.new(:app_files_backup, 'App files') do
7
+
8
+ archive :files do |archive|
9
+ dir_app = $app_config[:path]
10
+
11
+
12
+ #archive.add "/path/to/a/file.rb"
13
+ archive.add "#{dir_app}"
14
+
15
+ in_dirs = ($backup_config['backup']['app_files']['include'] rescue []) || []
16
+
17
+ ignore_dirs = %w[.idea .git .vagrant .ansible .chef backup]
18
+ ex_dirs_base = %w[tmp log public/assets public/images public/uploads ]
19
+ ex_dirs = ($backup_config['backup']['app_files']['exclude'] rescue []) || []
20
+
21
+ (in_dirs).each do |d|
22
+ archive.add "#{dir_app}#{d}"
23
+ end
24
+
25
+ (ex_dirs_base+ignore_dirs+ex_dirs).each do |d|
26
+ archive.exclude "#{dir_app}#{d}"
27
+ end
28
+
29
+
30
+
31
+ end
32
+
33
+
34
+
35
+
36
+
37
+ #### Storages
38
+
39
+
40
+ $backup_config['storages'].each do |b|
41
+ if b['type']=='scp'
42
+ store_with SCP do |server|
43
+ build_storage_scp(server, b)
44
+ end
45
+
46
+ elsif b['type']=='s3'
47
+ ##
48
+ # Store on Amazon S3
49
+ #
50
+ store_with S3 do |s3|
51
+ build_storage_s3(s3, b)
52
+ end
53
+
54
+ elsif b['type']=='local'
55
+ ##
56
+ # Local (Copy)
57
+ #
58
+ store_with Local do |local|
59
+ build_storage_local(local, b)
60
+ end
61
+ end
62
+ end
63
+
64
+
65
+
66
+ ##
67
+ # Gzip [Compressor]
68
+ #
69
+ compress_with Gzip
70
+
71
+
72
+
73
+ ### notify
74
+
75
+ notify_by Mail do |mail|
76
+ c = $smtp_config
77
+
78
+
79
+ end
80
+
81
+ end
@@ -0,0 +1,62 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+
5
+
6
+ Model.new(:db_backup, 'Backup DB of Rails app') do
7
+ database MySQL, :gex do |db|
8
+ db.name = $db_config['db']
9
+ db.host = $db_config['db_host']
10
+ db.username = $db_config['db_user']
11
+ db.password = $db_config['db_password']
12
+
13
+ end
14
+
15
+
16
+
17
+
18
+
19
+ #### Storages
20
+
21
+ $backup_config['storages'].each do |b|
22
+ if b['type']=='scp'
23
+ store_with SCP do |server|
24
+ build_storage_scp(server, b)
25
+ end
26
+
27
+ elsif b['type']=='s3'
28
+ ##
29
+ # Store on Amazon S3
30
+ #
31
+ store_with S3 do |s3|
32
+ build_storage_s3(s3, b)
33
+ end
34
+
35
+ elsif b['type']=='local'
36
+ ##
37
+ # Local (Copy)
38
+ #
39
+ store_with Local do |local|
40
+ build_storage_local(local, b)
41
+ end
42
+ end
43
+ end
44
+
45
+
46
+
47
+ ##
48
+ # Gzip [Compressor]
49
+ #
50
+ compress_with Gzip
51
+
52
+
53
+
54
+ ### notify
55
+
56
+ notify_by Mail do |mail|
57
+ c = $smtp_config
58
+
59
+
60
+ end
61
+
62
+ end
@@ -0,0 +1,79 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+
5
+
6
+ Model.new(:user_files_backup, 'App files') do
7
+
8
+ archive :files do |archive|
9
+ dir_app = $app_config[:path]
10
+
11
+
12
+ archive.add "#{dir_app}"
13
+
14
+ ignore_dirs = %w[.idea .git .vagrant .ansible .chef]
15
+ ex_dirs_base = %w[tmp log ]
16
+ in_dirs = ($backup_config['backup']['user_files']['include'] rescue []) || []
17
+ ex_dirs = ($backup_config['backup']['user_files']['exclude'] rescue []) || []
18
+
19
+ (in_dirs).each do |d|
20
+ archive.add "#{dir_app}#{d}"
21
+ end
22
+
23
+ (ignore_dirs+ex_dirs_base+ex_dirs).each do |d|
24
+ archive.exclude "#{dir_app}#{d}"
25
+ end
26
+
27
+ end
28
+
29
+
30
+
31
+
32
+
33
+ #### Storages
34
+
35
+ #setup_storages
36
+
37
+
38
+ $backup_config['storages'].each do |b|
39
+ if b['type']=='scp'
40
+ store_with SCP do |server|
41
+ build_storage_scp(server, b)
42
+ end
43
+
44
+ elsif b['type']=='s3'
45
+ ##
46
+ # Store on Amazon S3
47
+ #
48
+ store_with S3 do |s3|
49
+ build_storage_s3(s3, b)
50
+ end
51
+
52
+ elsif b['type']=='local'
53
+ ##
54
+ # Local (Copy)
55
+ #
56
+ store_with Local do |local|
57
+ build_storage_local(local, b)
58
+ end
59
+ end
60
+ end
61
+
62
+
63
+
64
+ ##
65
+ # Gzip [Compressor]
66
+ #
67
+ compress_with Gzip
68
+
69
+
70
+
71
+ ### notify
72
+
73
+ notify_by Mail do |mail|
74
+ c = $smtp_config
75
+
76
+
77
+ end
78
+
79
+ end
@@ -1,3 +1,3 @@
1
1
  module OptimacmsBackups
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -20,7 +20,7 @@ namespace :optimacms_backups do
20
20
  ]
21
21
 
22
22
  files.each do |f|
23
- source = File.join(Gem.loaded_specs["optimacms_backups"].full_gem_path, "backup", f)
23
+ source = File.join(Gem.loaded_specs["optimacms_backups"].full_gem_path, "lib/optimacms_backups/backup", f)
24
24
  target = File.join(Rails.root, "backup", f)
25
25
 
26
26
  FileUtils.cp_r source, target
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optimacms_backups
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Ivak
@@ -59,6 +59,11 @@ files:
59
59
  - config/routes.rb
60
60
  - lib/optimacms/admin_menu/admin_menu.rb
61
61
  - lib/optimacms_backups.rb
62
+ - lib/optimacms_backups/backup/config.rb
63
+ - lib/optimacms_backups/backup/init.rb
64
+ - lib/optimacms_backups/backup/models/app_files_backup.rb
65
+ - lib/optimacms_backups/backup/models/db_backup.rb
66
+ - lib/optimacms_backups/backup/models/user_files_backup.rb
62
67
  - lib/optimacms_backups/engine.rb
63
68
  - lib/optimacms_backups/version.rb
64
69
  - lib/tasks/optimacms_backups/optimacms_backups.rake