backup 2.3.1 → 2.3.2.pre
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/CHANGELOG +16 -1
- data/README.textile +42 -177
- data/bin/backup +14 -17
- data/generators/backup/templates/config/backup.rb +26 -6
- data/generators/backup/templates/migrations/create_backup_tables.rb +3 -2
- data/generators/backup/templates/tasks/backup.rake +14 -17
- data/generators/backup_update/backup_update_generator.rb +50 -0
- data/generators/backup_update/templates/migrations/update_backup_tables.rb +27 -0
- data/lib/backup.rb +31 -30
- data/lib/backup/adapters/archive.rb +19 -54
- data/lib/backup/adapters/base.rb +55 -35
- data/lib/backup/adapters/custom.rb +15 -53
- data/lib/backup/adapters/mysql.rb +24 -55
- data/lib/backup/adapters/postgresql.rb +19 -54
- data/lib/backup/adapters/sqlite.rb +25 -0
- data/lib/backup/command_helper.rb +11 -0
- data/lib/backup/configuration/adapter.rb +4 -11
- data/lib/backup/configuration/adapter_options.rb +3 -14
- data/lib/backup/configuration/attributes.rb +19 -0
- data/lib/backup/configuration/base.rb +26 -9
- data/lib/backup/configuration/mail.rb +3 -9
- data/lib/backup/configuration/smtp.rb +3 -14
- data/lib/backup/configuration/storage.rb +3 -12
- data/lib/backup/connection/s3.rb +3 -1
- data/lib/backup/environment/unix.rb +4 -4
- data/lib/backup/mail/base.rb +8 -2
- data/lib/backup/mail/mail.txt +3 -3
- data/lib/backup/record/base.rb +65 -0
- data/lib/backup/record/ftp.rb +10 -69
- data/lib/backup/record/local.rb +26 -0
- data/lib/backup/record/s3.rb +9 -63
- data/lib/backup/record/scp.rb +9 -64
- data/lib/backup/record/sftp.rb +10 -68
- data/lib/backup/storage/ftp.rb +3 -1
- data/lib/backup/storage/local.rb +24 -0
- data/lib/backup/storage/s3.rb +3 -1
- data/lib/backup/storage/scp.rb +3 -1
- data/lib/backup/storage/sftp.rb +3 -1
- data/setup/backup.rb +27 -6
- data/setup/backup.sqlite3 +0 -0
- metadata +130 -60
- data/.document +0 -5
- data/.gitignore +0 -5
- data/Rakefile +0 -70
- data/backup.gemspec +0 -111
@@ -1,12 +1,13 @@
|
|
1
1
|
class CreateBackupTables < ActiveRecord::Migration
|
2
2
|
def self.up
|
3
3
|
create_table :backup do |t|
|
4
|
-
t.string :storage
|
5
4
|
t.string :trigger
|
6
5
|
t.string :adapter
|
7
6
|
t.string :filename
|
7
|
+
t.string :md5sum
|
8
8
|
t.string :path
|
9
9
|
t.string :bucket
|
10
|
+
t.string :type
|
10
11
|
t.timestamps
|
11
12
|
end
|
12
13
|
end
|
@@ -14,4 +15,4 @@ class CreateBackupTables < ActiveRecord::Migration
|
|
14
15
|
def self.down
|
15
16
|
drop_table :backup
|
16
17
|
end
|
17
|
-
end
|
18
|
+
end
|
@@ -12,10 +12,11 @@ namespace :backup do
|
|
12
12
|
backup = Backup::Setup.new(ENV['trigger'], @backup_procedures)
|
13
13
|
records = Array.new
|
14
14
|
case backup.procedure.storage_name.to_sym
|
15
|
-
when :s3 then records = Backup::Record::S3.all
|
16
|
-
when :scp then records = Backup::Record::SCP.all
|
17
|
-
when :ftp then records = Backup::Record::FTP.all
|
18
|
-
when :sftp then records = Backup::Record::SFTP.all
|
15
|
+
when :s3 then records = Backup::Record::S3.all :conditions => {:trigger => ENV['trigger']}
|
16
|
+
when :scp then records = Backup::Record::SCP.all :conditions => {:trigger => ENV['trigger']}
|
17
|
+
when :ftp then records = Backup::Record::FTP.all :conditions => {:trigger => ENV['trigger']}
|
18
|
+
when :sftp then records = Backup::Record::SFTP.all :conditions => {:trigger => ENV['trigger']}
|
19
|
+
when :local then records = Backup::Record::Local.all :conditions => {:trigger => ENV['trigger']}
|
19
20
|
end
|
20
21
|
|
21
22
|
if ENV['table'].eql?("true")
|
@@ -30,19 +31,13 @@ namespace :backup do
|
|
30
31
|
desc "Truncates all records for the specified \"trigger\", excluding the physical files on s3 or the remote server."
|
31
32
|
task :truncate => :environment do
|
32
33
|
puts "Truncating backup records with trigger: #{ENV['trigger']}."
|
33
|
-
Backup::Record::
|
34
|
-
Backup::Record::SCP.destroy_all :trigger => ENV['trigger'], :storage => 'scp'
|
35
|
-
Backup::Record::FTP.destroy_all :trigger => ENV['trigger'], :storage => 'ftp'
|
36
|
-
Backup::Record::SFTP.destroy_all :trigger => ENV['trigger'], :storage => 'sftp'
|
34
|
+
Backup::Record::Base.destroy_all :trigger => ENV['trigger']
|
37
35
|
end
|
38
36
|
|
39
37
|
desc "Truncates everything."
|
40
38
|
task :truncate_all => :environment do
|
41
39
|
puts "Truncating all backup records."
|
42
|
-
Backup::Record::
|
43
|
-
Backup::Record::SCP.destroy_all
|
44
|
-
Backup::Record::FTP.destroy_all
|
45
|
-
Backup::Record::SFTP.destroy_all
|
40
|
+
Backup::Record::Base.destroy_all
|
46
41
|
end
|
47
42
|
|
48
43
|
desc "Destroys all records for the specified \"trigger\", including the physical files on s3 or the remote server."
|
@@ -50,10 +45,11 @@ namespace :backup do
|
|
50
45
|
puts "Destroying backup records with trigger: #{ENV['trigger']}."
|
51
46
|
backup = Backup::Setup.new(ENV['trigger'], @backup_procedures)
|
52
47
|
case backup.procedure.storage_name.to_sym
|
53
|
-
when :s3 then Backup::Record::S3.destroy_all_backups
|
54
|
-
when :scp then Backup::Record::SCP.destroy_all_backups
|
55
|
-
when :ftp then Backup::Record::FTP.destroy_all_backups
|
56
|
-
when :sftp then Backup::Record::SFTP.destroy_all_backups
|
48
|
+
when :s3 then Backup::Record::S3.destroy_all_backups backup.procedure, ENV['trigger']
|
49
|
+
when :scp then Backup::Record::SCP.destroy_all_backups backup.procedure, ENV['trigger']
|
50
|
+
when :ftp then Backup::Record::FTP.destroy_all_backups backup.procedure, ENV['trigger']
|
51
|
+
when :sftp then Backup::Record::SFTP.destroy_all_backups backup.procedure, ENV['trigger']
|
52
|
+
when :local then Backup::Record::Local.destroy_all_backups backup.procedure, ENV['trigger']
|
57
53
|
end
|
58
54
|
end
|
59
55
|
|
@@ -67,8 +63,9 @@ namespace :backup do
|
|
67
63
|
when :scp then Backup::Record::SCP.destroy_all_backups backup_procedure, backup_procedure.trigger
|
68
64
|
when :ftp then Backup::Record::FTP.destroy_all_backups backup_procedure, backup_procedure.trigger
|
69
65
|
when :sftp then Backup::Record::SFTP.destroy_all_backups backup_procedure, backup_procedure.trigger
|
66
|
+
when :local then Backup::Record::Local.destroy_all_backups backup_procedure, backup_procedure.trigger
|
70
67
|
end
|
71
68
|
end
|
72
69
|
end
|
73
70
|
|
74
|
-
end
|
71
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
class BackupUpdateGenerator < Rails::Generator::Base
|
2
|
+
|
3
|
+
# This method gets initialized when the generator gets run.
|
4
|
+
# It will receive an array of arguments inside @args
|
5
|
+
def initialize(runtime_args, runtime_options = {})
|
6
|
+
super
|
7
|
+
end
|
8
|
+
|
9
|
+
# Processes the file generation/templating
|
10
|
+
# This will automatically be run after the initialize method
|
11
|
+
def manifest
|
12
|
+
record do |m|
|
13
|
+
|
14
|
+
# Generates the database update migration file
|
15
|
+
m.migration_template "migrations/update_backup_tables.rb",
|
16
|
+
"db/migrate",
|
17
|
+
:migration_file_name => "update_backup_tables"
|
18
|
+
|
19
|
+
# Outputs the generators message to the terminal
|
20
|
+
puts message
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def message
|
25
|
+
<<-MESSAGE
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
==============================================================
|
30
|
+
Backup's update files have been generated!
|
31
|
+
==============================================================
|
32
|
+
|
33
|
+
Please follow these instructions Backup:
|
34
|
+
|
35
|
+
1: Please migrate the database to finish the update!
|
36
|
+
|
37
|
+
rake db:migrate
|
38
|
+
|
39
|
+
|
40
|
+
For More Information:
|
41
|
+
http://github.com/meskyanichi/backup
|
42
|
+
|
43
|
+
==============================================================
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
MESSAGE
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class UpdateBackupTables < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
change_table :backup do |t|
|
4
|
+
t.rename :storage, :type # will use STI from now
|
5
|
+
t.string :md5sum
|
6
|
+
end
|
7
|
+
|
8
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='Backup::Record::FTP' WHERE type='ftp'"
|
9
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='Backup::Record::Local' WHERE type='local'"
|
10
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='Backup::Record::S3' WHERE type='s3'"
|
11
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='Backup::Record::SCP' WHERE type='scp'"
|
12
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='Backup::Record::SFTP' WHERE type='sftp'"
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.down
|
16
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='ftp' WHERE type='Backup::Record::FTP'"
|
17
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='local' WHERE type='Backup::Record::Local'"
|
18
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='s3' WHERE type='Backup::Record::S3'"
|
19
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='scp' WHERE type='Backup::Record::SCP'"
|
20
|
+
ActiveRecord::Base.connection.execute "UPDATE backup SET type='sftp' WHERE type='Backup::Record::SFTP'"
|
21
|
+
|
22
|
+
change_table :backup do |t|
|
23
|
+
t.rename :type, :storage
|
24
|
+
t.remove :md5sum
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/backup.rb
CHANGED
@@ -1,10 +1,4 @@
|
|
1
1
|
# Load Gems
|
2
|
-
require 'net/ssh'
|
3
|
-
require 'net/scp'
|
4
|
-
require 'net/ftp'
|
5
|
-
require 'net/sftp'
|
6
|
-
require 'aws/s3'
|
7
|
-
require 'pony'
|
8
2
|
require 'hirb'
|
9
3
|
|
10
4
|
# Load Environments
|
@@ -13,6 +7,7 @@ require 'backup/environment/unix'
|
|
13
7
|
require 'backup/environment/rails'
|
14
8
|
|
15
9
|
# Load Configuration
|
10
|
+
require 'backup/configuration/attributes'
|
16
11
|
require 'backup/configuration/base'
|
17
12
|
require 'backup/configuration/adapter'
|
18
13
|
require 'backup/configuration/adapter_options'
|
@@ -21,7 +16,9 @@ require 'backup/configuration/mail'
|
|
21
16
|
require 'backup/configuration/smtp'
|
22
17
|
require 'backup/configuration/helpers'
|
23
18
|
|
24
|
-
|
19
|
+
require 'backup/command_helper'
|
20
|
+
|
21
|
+
# Include the Configuration and Environment Helpers
|
25
22
|
include Backup::Configuration::Helpers
|
26
23
|
include Backup::Environment::Base
|
27
24
|
|
@@ -42,31 +39,34 @@ require 'backup/mail/base'
|
|
42
39
|
# Set Mail Configuration (extracted from the backup.rb configuration file) inside the Mail Class
|
43
40
|
Backup::Mail::Base.setup(@mail_configuration)
|
44
41
|
|
45
|
-
#
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
# Load Storage
|
56
|
-
require 'backup/storage/s3'
|
57
|
-
require 'backup/storage/scp'
|
58
|
-
require 'backup/storage/ftp'
|
59
|
-
require 'backup/storage/sftp'
|
42
|
+
# Backup Module
|
43
|
+
module Backup
|
44
|
+
module Adapters
|
45
|
+
autoload :Base, 'backup/adapters/base'
|
46
|
+
autoload :MySQL, 'backup/adapters/mysql'
|
47
|
+
autoload :SQLite, 'backup/adapters/sqlite'
|
48
|
+
autoload :PostgreSQL, 'backup/adapters/postgresql'
|
49
|
+
autoload :Archive, 'backup/adapters/archive'
|
50
|
+
autoload :Custom, 'backup/adapters/custom'
|
51
|
+
end
|
60
52
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
53
|
+
module Storage
|
54
|
+
autoload :S3, 'backup/storage/s3'
|
55
|
+
autoload :SCP, 'backup/storage/scp'
|
56
|
+
autoload :FTP, 'backup/storage/ftp'
|
57
|
+
autoload :SFTP, 'backup/storage/sftp'
|
58
|
+
autoload :Local, 'backup/storage/local'
|
59
|
+
end
|
66
60
|
|
61
|
+
module Record
|
62
|
+
autoload :Base, 'backup/record/base'
|
63
|
+
autoload :S3, 'backup/record/s3'
|
64
|
+
autoload :SCP, 'backup/record/scp'
|
65
|
+
autoload :FTP, 'backup/record/ftp'
|
66
|
+
autoload :SFTP, 'backup/record/sftp'
|
67
|
+
autoload :Local, 'backup/record/local'
|
68
|
+
end
|
67
69
|
|
68
|
-
# Backup Module
|
69
|
-
module Backup
|
70
70
|
class Setup
|
71
71
|
|
72
72
|
attr_accessor :trigger, :procedures, :procedure
|
@@ -83,6 +83,7 @@ module Backup
|
|
83
83
|
def initialize_adapter
|
84
84
|
case procedure.adapter_name.to_sym
|
85
85
|
when :mysql then Backup::Adapters::MySQL.new trigger, procedure
|
86
|
+
when :sqlite then Backup::Adapters::SQLite.new trigger, procedure
|
86
87
|
when :postgresql then Backup::Adapters::PostgreSQL.new trigger, procedure
|
87
88
|
when :archive then Backup::Adapters::Archive.new trigger, procedure
|
88
89
|
when :custom then Backup::Adapters::Custom.new trigger, procedure
|
@@ -108,4 +109,4 @@ module Backup
|
|
108
109
|
end
|
109
110
|
|
110
111
|
end
|
111
|
-
end
|
112
|
+
end
|
@@ -2,68 +2,33 @@ module Backup
|
|
2
2
|
module Adapters
|
3
3
|
class Archive < Backup::Adapters::Base
|
4
4
|
|
5
|
-
attr_accessor :
|
6
|
-
|
7
|
-
# Initializes the Backup Process
|
8
|
-
#
|
9
|
-
# This will first load in any prefixed settings from the Backup::Adapters::Base
|
10
|
-
# Then it will add it's own settings.
|
11
|
-
#
|
12
|
-
# First it will archive and compress every folder/file
|
13
|
-
# Then it will optionally encrypt the backed up file
|
14
|
-
# Then it will store it to the specified storage location
|
15
|
-
# Then it will record the data to the database
|
16
|
-
# Once this is all done, all the temporary files will be removed
|
17
|
-
#
|
18
|
-
# Wrapped inside of begin/ensure/end block to ensure the deletion of any files in the tmp directory
|
19
|
-
def initialize(trigger, procedure)
|
20
|
-
super
|
21
|
-
load_settings
|
22
|
-
|
23
|
-
begin
|
24
|
-
targz
|
25
|
-
encrypt
|
26
|
-
store
|
27
|
-
record
|
28
|
-
notify
|
29
|
-
ensure
|
30
|
-
remove_tmp_files
|
31
|
-
end
|
32
|
-
end
|
5
|
+
attr_accessor :files, :exclude
|
33
6
|
|
34
7
|
private
|
35
|
-
|
8
|
+
|
36
9
|
# Archives and Compresses all files
|
37
|
-
def
|
38
|
-
|
39
|
-
|
40
|
-
puts system_messages[:archiving]; puts system_messages[:compressing]
|
41
|
-
%x{ tar -czf #{File.join(tmp_path, compressed_file)} #{files.map{|f| f.gsub(' ', '\ ')}.join(' ')} }
|
42
|
-
elsif files.is_a?(String)
|
43
|
-
puts system_messages[:archiving]; puts system_messages[:compressing]
|
44
|
-
%x{ tar -czf #{File.join(tmp_path, compressed_file)} #{files.gsub(' ', '\ ')} }
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# Encrypts the Archive
|
49
|
-
def encrypt
|
50
|
-
if encrypt_with_password.is_a?(String)
|
51
|
-
puts system_messages[:encrypting]
|
52
|
-
%x{ openssl enc -des-cbc -in #{File.join(tmp_path, compressed_file)} -out #{File.join(tmp_path, encrypted_file)} -k #{encrypt_with_password} }
|
53
|
-
self.final_file = encrypted_file
|
54
|
-
end
|
10
|
+
def perform
|
11
|
+
log system_messages[:archiving]; log system_messages[:compressing]
|
12
|
+
run "tar -czf #{File.join(tmp_path, compressed_file)} #{exclude_files} #{tar_files}"
|
55
13
|
end
|
56
14
|
|
57
|
-
# Loads the initial settings
|
58
15
|
def load_settings
|
59
|
-
self.
|
16
|
+
self.files = procedure.get_adapter_configuration.attributes['files']
|
17
|
+
self.exclude = procedure.get_adapter_configuration.attributes['exclude']
|
18
|
+
end
|
60
19
|
|
61
|
-
|
62
|
-
|
63
|
-
self.encrypted_file = "#{compressed_file}.enc"
|
64
|
-
self.final_file = compressed_file
|
20
|
+
def performed_file_extension
|
21
|
+
".tar"
|
65
22
|
end
|
66
23
|
|
24
|
+
def tar_files
|
25
|
+
[*files].map{|f| f.gsub(' ', '\ ')}.join(' ')
|
26
|
+
end
|
27
|
+
|
28
|
+
def exclude_files
|
29
|
+
[*exclude].compact.map{|x| "--exclude=#{x}"}.join(' ')
|
30
|
+
end
|
31
|
+
|
67
32
|
end
|
68
33
|
end
|
69
|
-
end
|
34
|
+
end
|
data/lib/backup/adapters/base.rb
CHANGED
@@ -2,6 +2,8 @@ module Backup
|
|
2
2
|
module Adapters
|
3
3
|
class Base
|
4
4
|
|
5
|
+
include Backup::CommandHelper
|
6
|
+
|
5
7
|
attr_accessor :procedure, :timestamp, :options, :tmp_path, :encrypt_with_password, :keep_backups, :trigger
|
6
8
|
|
7
9
|
# IMPORTANT
|
@@ -13,8 +15,21 @@ module Backup
|
|
13
15
|
# myfile.gz.enc
|
14
16
|
#
|
15
17
|
# It is important that, whatever the final filename of the file will be, that :final_file will contain it.
|
16
|
-
attr_accessor :final_file
|
18
|
+
attr_accessor :performed_file, :compressed_file, :encrypted_file, :final_file
|
17
19
|
|
20
|
+
# Initializes the Backup Process
|
21
|
+
#
|
22
|
+
# This will first load in any prefixed settings from the Backup::Adapters::Base
|
23
|
+
# Then it will add it's own settings.
|
24
|
+
#
|
25
|
+
# First it will call the 'perform' method. This method is concerned with the backup, and must
|
26
|
+
# be implemented by derived classes!
|
27
|
+
# Then it will optionally encrypt the backed up file
|
28
|
+
# Then it will store it to the specified storage location
|
29
|
+
# Then it will record the data to the database
|
30
|
+
# Once this is all done, all the temporary files will be removed
|
31
|
+
#
|
32
|
+
# Wrapped inside of begin/ensure/end block to ensure the deletion of any files in the tmp directory
|
18
33
|
def initialize(trigger, procedure)
|
19
34
|
self.trigger = trigger
|
20
35
|
self.procedure = procedure
|
@@ -22,54 +37,58 @@ module Backup
|
|
22
37
|
self.tmp_path = File.join(BACKUP_PATH.gsub(' ', '\ '), 'tmp', 'backup', trigger)
|
23
38
|
self.encrypt_with_password = procedure.attributes['encrypt_with_password']
|
24
39
|
self.keep_backups = procedure.attributes['keep_backups']
|
25
|
-
|
40
|
+
|
41
|
+
self.performed_file = "#{timestamp}.#{trigger.gsub(' ', '-')}#{performed_file_extension}"
|
42
|
+
self.compressed_file = "#{performed_file}.gz"
|
43
|
+
self.encrypted_file = "#{compressed_file}.enc"
|
44
|
+
self.final_file = compressed_file
|
45
|
+
|
46
|
+
begin
|
47
|
+
create_tmp_folder
|
48
|
+
load_settings # if respond_to?(:load_settings)
|
49
|
+
perform
|
50
|
+
encrypt
|
51
|
+
store
|
52
|
+
record
|
53
|
+
notify
|
54
|
+
ensure
|
55
|
+
remove_tmp_files
|
56
|
+
end
|
26
57
|
end
|
27
58
|
|
28
59
|
# Creates the temporary folder for the specified adapter
|
29
60
|
def create_tmp_folder
|
30
|
-
|
61
|
+
run "mkdir -p #{tmp_path}"
|
62
|
+
end
|
63
|
+
|
64
|
+
# TODO make methods in derived classes public? respond_to cannot identify private methods
|
65
|
+
def load_settings
|
31
66
|
end
|
32
67
|
|
33
68
|
# Removes the files inside the temporary folder
|
34
69
|
def remove_tmp_files
|
35
|
-
|
70
|
+
run "rm #{File.join(tmp_path, '*')}"
|
36
71
|
end
|
37
72
|
|
38
|
-
#
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
def store
|
45
|
-
case procedure.storage_name.to_sym
|
46
|
-
when :s3 then Backup::Storage::S3.new(self)
|
47
|
-
when :scp then Backup::Storage::SCP.new(self)
|
48
|
-
when :ftp then Backup::Storage::FTP.new(self)
|
49
|
-
when :sftp then Backup::Storage::SFTP.new(self)
|
73
|
+
# Encrypts the archive file
|
74
|
+
def encrypt
|
75
|
+
if encrypt_with_password.is_a?(String)
|
76
|
+
log system_messages[:encrypting]
|
77
|
+
run "openssl enc -des-cbc -in #{File.join(tmp_path, compressed_file)} -out #{File.join(tmp_path, encrypted_file)} -k #{encrypt_with_password}"
|
78
|
+
self.final_file = encrypted_file
|
50
79
|
end
|
51
80
|
end
|
52
81
|
|
82
|
+
# Initializes the storing process
|
83
|
+
def store
|
84
|
+
procedure.initialize_storage(self)
|
85
|
+
end
|
86
|
+
|
53
87
|
# Records data on every individual file to the database
|
54
88
|
def record
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
record.load_adapter(self)
|
59
|
-
record.save
|
60
|
-
when :scp
|
61
|
-
record = Backup::Record::SCP.new
|
62
|
-
record.load_adapter(self)
|
63
|
-
record.save
|
64
|
-
when :ftp
|
65
|
-
record = Backup::Record::FTP.new
|
66
|
-
record.load_adapter(self)
|
67
|
-
record.save
|
68
|
-
when :sftp
|
69
|
-
record = Backup::Record::SFTP.new
|
70
|
-
record.load_adapter(self)
|
71
|
-
record.save
|
72
|
-
end
|
89
|
+
record = procedure.initialize_record
|
90
|
+
record.load_adapter(self)
|
91
|
+
record.save
|
73
92
|
end
|
74
93
|
|
75
94
|
# Delivers a notification by email regarding the successfully stored backup
|
@@ -85,9 +104,10 @@ module Backup
|
|
85
104
|
:encrypting => "Encrypting backup..",
|
86
105
|
:mysqldump => "Creating MySQL dump..",
|
87
106
|
:pgdump => "Creating PostgreSQL dump..",
|
107
|
+
:sqlite => "Copying and compressing SQLite database..",
|
88
108
|
:commands => "Executing commands.." }
|
89
109
|
end
|
90
110
|
|
91
111
|
end
|
92
112
|
end
|
93
|
-
end
|
113
|
+
end
|