backup-wakiki 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/.document +5 -0
  2. data/.gitignore +5 -0
  3. data/CHANGELOG +77 -0
  4. data/LICENSE +9 -0
  5. data/README.textile +175 -0
  6. data/Rakefile +65 -0
  7. data/VERSION +1 -0
  8. data/backup-2.3.1.gem +0 -0
  9. data/backup-wakiki.gemspec +113 -0
  10. data/backup.gemspec +111 -0
  11. data/bin/backup +124 -0
  12. data/generators/backup/backup_generator.rb +72 -0
  13. data/generators/backup/templates/config/backup.rb +202 -0
  14. data/generators/backup/templates/migrations/create_backup_tables.rb +18 -0
  15. data/generators/backup/templates/tasks/backup.rake +71 -0
  16. data/generators/backup_update/backup_update_generator.rb +50 -0
  17. data/generators/backup_update/templates/migrations/update_backup_tables.rb +27 -0
  18. data/lib/backup.rb +112 -0
  19. data/lib/backup/adapters/archive.rb +34 -0
  20. data/lib/backup/adapters/base.rb +113 -0
  21. data/lib/backup/adapters/custom.rb +41 -0
  22. data/lib/backup/adapters/mysql.rb +60 -0
  23. data/lib/backup/adapters/postgresql.rb +56 -0
  24. data/lib/backup/adapters/sqlite.rb +25 -0
  25. data/lib/backup/command_helper.rb +11 -0
  26. data/lib/backup/configuration/adapter.rb +21 -0
  27. data/lib/backup/configuration/adapter_options.rb +8 -0
  28. data/lib/backup/configuration/attributes.rb +19 -0
  29. data/lib/backup/configuration/base.rb +55 -0
  30. data/lib/backup/configuration/helpers.rb +24 -0
  31. data/lib/backup/configuration/mail.rb +20 -0
  32. data/lib/backup/configuration/smtp.rb +8 -0
  33. data/lib/backup/configuration/storage.rb +8 -0
  34. data/lib/backup/connection/s3.rb +87 -0
  35. data/lib/backup/environment/base.rb +12 -0
  36. data/lib/backup/environment/rails.rb +17 -0
  37. data/lib/backup/environment/unix.rb +94 -0
  38. data/lib/backup/mail/base.rb +96 -0
  39. data/lib/backup/mail/mail.txt +7 -0
  40. data/lib/backup/record/base.rb +65 -0
  41. data/lib/backup/record/ftp.rb +39 -0
  42. data/lib/backup/record/local.rb +26 -0
  43. data/lib/backup/record/s3.rb +26 -0
  44. data/lib/backup/record/scp.rb +33 -0
  45. data/lib/backup/record/sftp.rb +38 -0
  46. data/lib/backup/storage/ftp.rb +38 -0
  47. data/lib/backup/storage/local.rb +24 -0
  48. data/lib/backup/storage/s3.rb +16 -0
  49. data/lib/backup/storage/scp.rb +30 -0
  50. data/lib/backup/storage/sftp.rb +31 -0
  51. data/setup/backup.rb +202 -0
  52. data/setup/backup.sqlite3 +0 -0
  53. data/spec/configuration/attributes_spec.rb +35 -0
  54. metadata +183 -0
@@ -0,0 +1,111 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{backup}
8
+ s.version = "2.4.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Michael van Rooijen", "Fernando Migliorini Luiz\303\243o"]
12
+ s.date = %q{2010-06-25}
13
+ s.default_executable = %q{backup}
14
+ s.description = %q{
15
+ Backup is a Ruby Gem written for Unix and Rails environments. It can be used both with and without the
16
+ Ruby on Rails framework! This gem offers a quick and simple solution to backing up databases such as
17
+ MySQL/PostgreSQL and Files/Folders. All backups can be transferred to Amazon S3 or any remote server you
18
+ have access to, using either SCP, SFTP or regular FTP. Backup handles Compression, Archiving, Encryption,
19
+ Backup Cleaning (Cycling) and supports Email Notifications.
20
+ }
21
+ s.email = %q{meskyanichi@gmail.com}
22
+ s.executables = ["backup"]
23
+ s.extra_rdoc_files = [
24
+ "LICENSE",
25
+ "README.textile"
26
+ ]
27
+ s.files = [
28
+ ".document",
29
+ ".gitignore",
30
+ "CHANGELOG",
31
+ "LICENSE",
32
+ "README.textile",
33
+ "Rakefile",
34
+ "VERSION",
35
+ "backup.gemspec",
36
+ "bin/backup",
37
+ "generators/backup/backup_generator.rb",
38
+ "generators/backup/templates/config/backup.rb",
39
+ "generators/backup/templates/migrations/create_backup_tables.rb",
40
+ "generators/backup/templates/tasks/backup.rake",
41
+ "generators/backup_update/backup_update_generator.rb",
42
+ "generators/backup_update/templates/migrations/update_backup_tables.rb",
43
+ "lib/backup.rb",
44
+ "lib/backup/adapters/archive.rb",
45
+ "lib/backup/adapters/base.rb",
46
+ "lib/backup/adapters/custom.rb",
47
+ "lib/backup/adapters/mysql.rb",
48
+ "lib/backup/adapters/postgresql.rb",
49
+ "lib/backup/adapters/sqlite.rb",
50
+ "lib/backup/command_helper.rb",
51
+ "lib/backup/configuration/adapter.rb",
52
+ "lib/backup/configuration/adapter_options.rb",
53
+ "lib/backup/configuration/attributes.rb",
54
+ "lib/backup/configuration/base.rb",
55
+ "lib/backup/configuration/helpers.rb",
56
+ "lib/backup/configuration/mail.rb",
57
+ "lib/backup/configuration/smtp.rb",
58
+ "lib/backup/configuration/storage.rb",
59
+ "lib/backup/connection/s3.rb",
60
+ "lib/backup/environment/base.rb",
61
+ "lib/backup/environment/rails.rb",
62
+ "lib/backup/environment/unix.rb",
63
+ "lib/backup/mail/base.rb",
64
+ "lib/backup/mail/mail.txt",
65
+ "lib/backup/record/base.rb",
66
+ "lib/backup/record/ftp.rb",
67
+ "lib/backup/record/local.rb",
68
+ "lib/backup/record/s3.rb",
69
+ "lib/backup/record/scp.rb",
70
+ "lib/backup/record/sftp.rb",
71
+ "lib/backup/storage/ftp.rb",
72
+ "lib/backup/storage/local.rb",
73
+ "lib/backup/storage/s3.rb",
74
+ "lib/backup/storage/scp.rb",
75
+ "lib/backup/storage/sftp.rb",
76
+ "setup/backup.rb",
77
+ "setup/backup.sqlite3",
78
+ "spec/configuration/attributes_spec.rb"
79
+ ]
80
+ s.homepage = %q{http://final-creation.com/open-source}
81
+ s.rdoc_options = ["--charset=UTF-8"]
82
+ s.require_paths = ["lib"]
83
+ s.rubygems_version = %q{1.3.7}
84
+ s.summary = %q{Backup is a Ruby Gem that simplifies making backups for databases, files and folders.}
85
+ s.test_files = [
86
+ "spec/configuration/attributes_spec.rb"
87
+ ]
88
+
89
+ if s.respond_to? :specification_version then
90
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
91
+ s.specification_version = 3
92
+
93
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
94
+ s.add_runtime_dependency(%q<activerecord>, [">= 2.3.5"])
95
+ s.add_runtime_dependency(%q<sqlite3-ruby>, [">= 1.2.5"])
96
+ s.add_runtime_dependency(%q<hirb>, [">= 0.2.9"])
97
+ s.add_runtime_dependency(%q<pony>, [">= 0.5"])
98
+ else
99
+ s.add_dependency(%q<activerecord>, [">= 2.3.5"])
100
+ s.add_dependency(%q<sqlite3-ruby>, [">= 1.2.5"])
101
+ s.add_dependency(%q<hirb>, [">= 0.2.9"])
102
+ s.add_dependency(%q<pony>, [">= 0.5"])
103
+ end
104
+ else
105
+ s.add_dependency(%q<activerecord>, [">= 2.3.5"])
106
+ s.add_dependency(%q<sqlite3-ruby>, [">= 1.2.5"])
107
+ s.add_dependency(%q<hirb>, [">= 0.2.9"])
108
+ s.add_dependency(%q<pony>, [">= 0.5"])
109
+ end
110
+ end
111
+
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'backup'
4
+
5
+ include Backup::Environment::Unix::Commands
6
+ include Backup::Environment::Unix::Helpers
7
+
8
+ options = {}
9
+
10
+ optparse = OptionParser.new do |opts|
11
+
12
+ opts.banner = "\nUsage: backup [options]\n "
13
+
14
+ opts.on('-r', '--run [trigger]', "Runs backup process by trigger") do |trigger|
15
+ confirm_configuration_file_existence
16
+ puts "Running: #{trigger}."
17
+ Backup::Setup.new(trigger, @backup_procedures).initialize_adapter
18
+ end
19
+
20
+ opts.on('-f', '--find [trigger]', "Finds backup records by trigger") do |trigger|
21
+ confirm_configuration_file_existence
22
+ puts "Finding backup records with trigger: #{trigger}."
23
+ backup = Backup::Setup.new(trigger, @backup_procedures)
24
+ records = Array.new
25
+ case backup.procedure.storage_name.to_sym
26
+ when :s3 then records = Backup::Record::S3.all :conditions => {:trigger => trigger}
27
+ when :scp then records = Backup::Record::SCP.all :conditions => {:trigger => trigger}
28
+ when :ftp then records = Backup::Record::FTP.all :conditions => {:trigger => trigger}
29
+ when :sftp then records = Backup::Record::SFTP.all :conditions => {:trigger => trigger}
30
+ when :local then records = Backup::Record::Local.all :conditions => {:trigger => trigger}
31
+ end
32
+
33
+ if options[:table]
34
+ puts Hirb::Helpers::AutoTable.render(records)
35
+ else
36
+ records.each do |record|
37
+ puts record.to_yaml
38
+ end
39
+ end
40
+ end
41
+
42
+ opts.on('-t', '--truncate [trigger]', "Truncates backup records for specified trigger") do |trigger|
43
+ puts "Truncating backup records with trigger: #{trigger}."
44
+ Backup::Record::Base.destroy_all :trigger => trigger
45
+ end
46
+
47
+ opts.on('-d', '--destroy [trigger]', "Destroys backup records and files for specified trigger") do |trigger|
48
+ confirm_configuration_file_existence
49
+ puts "Destroying backup records with trigger: #{trigger}."
50
+ backup = Backup::Setup.new(trigger, @backup_procedures)
51
+ case backup.procedure.storage_name.to_sym
52
+ when :s3 then Backup::Record::S3.destroy_all_backups backup.procedure, trigger
53
+ when :scp then Backup::Record::SCP.destroy_all_backups backup.procedure, trigger
54
+ when :ftp then Backup::Record::FTP.destroy_all_backups backup.procedure, trigger
55
+ when :sftp then Backup::Record::SFTP.destroy_all_backups backup.procedure, trigger
56
+ when :local then Backup::Record::Local.destroy_all_backups backup.procedure, trigger
57
+ end
58
+ end
59
+
60
+ opts.on('--truncate-all', "Truncates all backup records") do
61
+ puts "Truncating all backup records."
62
+ Backup::Record::Base.destroy_all
63
+ end
64
+
65
+ opts.on('--destroy-all', "Destroys all backup records and files") do
66
+ confirm_configuration_file_existence
67
+ puts "Destroying all backup records."
68
+ backup = Backup::Setup.new(false, @backup_procedures)
69
+ backup.procedures.each do |backup_procedure|
70
+ case backup_procedure.storage_name.to_sym
71
+ when :s3 then Backup::Record::S3.destroy_all_backups backup_procedure, backup_procedure.trigger
72
+ when :scp then Backup::Record::SCP.destroy_all_backups backup_procedure, backup_procedure.trigger
73
+ when :ftp then Backup::Record::FTP.destroy_all_backups backup_procedure, backup_procedure.trigger
74
+ when :sftp then Backup::Record::SFTP.destroy_all_backups backup_procedure, backup_procedure.trigger
75
+ when :local then Backup::Record::Local.destroy_all_backups backup.procedure, backup_procedure.trigger
76
+ end
77
+ end
78
+ end
79
+
80
+ opts.on('--decrypt [file]', "Decrypts a \"Backup\" encrypted file") do |file|
81
+ puts "Attempting to decrypt: #{file}."
82
+ %x{ openssl enc -des-cbc -d -in #{file} -out #{file.gsub('.enc', '')} }
83
+ end
84
+
85
+ options[:table] = false
86
+ opts.on('--table', "Shows records in table format") do |format|
87
+ options[:table] = true
88
+ end
89
+
90
+ opts.on('--setup', "Sets up Backup") do
91
+ setup
92
+ end
93
+
94
+ opts.on('--reset', "Reinstalls Backup (This will remove ALL current settings!)") do
95
+ reset
96
+ end
97
+
98
+ opts.on('--remove', "Removes Backup (This will remove ALL current settings!)") do
99
+ remove
100
+ end
101
+
102
+ opts.on('-v', '--version', 'Displays installed Backup version') do
103
+ File.open(File.join(File.dirname(__FILE__), '..', 'VERSION')) do |file|
104
+ puts "Backup version #{file.read}"
105
+ end
106
+ exit
107
+ end
108
+
109
+ opts.on('-h', '--help', 'Display help screen') do
110
+ puts opts
111
+ puts "\n "
112
+ exit
113
+ end
114
+
115
+ end
116
+
117
+ begin
118
+ optparse.parse!
119
+ rescue OptionParser::InvalidOption
120
+ puts "\nInvalid Option. See the list of available options below.\n"
121
+ puts optparse
122
+ puts "\n "
123
+ exit
124
+ end
@@ -0,0 +1,72 @@
1
+ class BackupGenerator < 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 Rake Tasks and Backup Database
15
+ m.directory "lib/tasks"
16
+ m.directory "lib/tasks/backup"
17
+ m.file "tasks/backup.rake", "lib/tasks/backup/backup.rake"
18
+
19
+ # Generates the configuration file
20
+ m.directory "config"
21
+ m.file "config/backup.rb", "config/backup.rb"
22
+
23
+ # Generates the database migration file
24
+ m.migration_template "migrations/create_backup_tables.rb",
25
+ "db/migrate",
26
+ :migration_file_name => "create_backup_tables"
27
+
28
+ # Outputs the generators message to the terminal
29
+ puts message
30
+ end
31
+ end
32
+
33
+ def message
34
+ <<-MESSAGE
35
+
36
+
37
+
38
+ ==============================================================
39
+ Backup's files have been generated!
40
+ ==============================================================
41
+
42
+ 1: Add the "Backup" gem to the config/environment.rb file!
43
+
44
+ config.gem "backup"
45
+
46
+
47
+ 2: Migrate the database!
48
+
49
+ rake db:migrate
50
+
51
+
52
+ 3: Set up some "Backup Settings" inside the backup configuration file!
53
+
54
+ config/backup.rb
55
+
56
+
57
+ 4: Run the backups! Enjoy.
58
+
59
+ rake backup:run trigger="your-specified-trigger"
60
+
61
+
62
+ For More Information:
63
+ http://github.com/meskyanichi/backup
64
+
65
+ ==============================================================
66
+
67
+
68
+
69
+ MESSAGE
70
+ end
71
+
72
+ end
@@ -0,0 +1,202 @@
1
+ # Backup Configuration File
2
+ #
3
+ # Use the "backup" block to add backup settings to the configuration file.
4
+ # The argument before the "do" in (backup "argument" do) is called a "trigger".
5
+ # This acts as the identifier for the configuration.
6
+ #
7
+ # In the example below we have a "mysql-backup-s3" trigger for the backup setting.
8
+ # All the configuration is done inside this block. To initialize the backup process for this block,
9
+ # you invoke it using the following rake task:
10
+ #
11
+ # rake backup:run trigger="mysql-backup-s3"
12
+ #
13
+ # You can add as many backup block settings as you want, just be sure every trigger is unique and you can run
14
+ # each of them separately.
15
+ #
16
+ # ADAPTERS
17
+ # - MySQL
18
+ # - PostgreSQL
19
+ # - SQLite
20
+ # - Archive
21
+ # - Custom
22
+ #
23
+ # STORAGE METHODS
24
+ # - S3 (Amazon)
25
+ # - SCP (Remote Server)
26
+ # - FTP (Remote Server)
27
+ # - SFTP (Remote Server)
28
+ # - LOCAL (Local Server)
29
+ #
30
+ # GLOBAL OPTIONS
31
+ # - Keep Backups (keep_backups)
32
+ # - Encrypt With Pasword (encrypt_with_password)
33
+ # - Notify (notify)
34
+ #
35
+ # This is the "decrypt" command for all encrypted backups:
36
+ # sudo backup --decrypt /path/to/encrypted/file
37
+ #
38
+ # Each Backup Setting can contain:
39
+ # - 1 Adapter
40
+ # - 1 Storage Method
41
+ # - Multiple Global Options
42
+ #
43
+ # The combination of these, however, do not matter! So experiment with it.
44
+ #
45
+ # You can also let Backup notify you by email on successfully created backups.
46
+ # - Just uncomment the block of code below (notifier_settings) and fill in your credentials.
47
+ # - Then for set "notify" to "true" in each (backup) block you wish to be notified of.
48
+ #
49
+ # For more information on "Backup", please refer to the wiki on github
50
+ # http://wiki.github.com/meskyanichi/backup/configuration-file
51
+
52
+
53
+ # Notifier
54
+ # Uncomment this if you want to enable notification by email on successful backup runs
55
+ # You will also have to set "notify true" inside each backup block below to enable it for that particular backup
56
+ # notifier_settings do
57
+ #
58
+ # to "example1@gmail.com"
59
+ # from "example2@gmail.com"
60
+ #
61
+ # smtp do
62
+ # host "smtp.gmail.com"
63
+ # port "587"
64
+ # username "example1@gmail.com"
65
+ # password "example1password"
66
+ # authentication "plain"
67
+ # domain "localhost.localdomain"
68
+ # tls true
69
+ # end
70
+ #
71
+ # end
72
+
73
+
74
+ # Initialize with:
75
+ # rake backup:run trigger='mysql-backup-s3'
76
+ backup 'mysql-backup-s3' do
77
+
78
+ adapter :mysql do
79
+ user 'user'
80
+ password 'password'
81
+ database 'database'
82
+
83
+ # skip_tables ['table1', 'table2', 'table3']
84
+ #
85
+ # options do
86
+ # host '123.45.678.90'
87
+ # port '80'
88
+ # socket '/tmp/socket.sock'
89
+ # end
90
+ # additional_options '--single-transaction --quick'
91
+ end
92
+
93
+ storage :s3 do
94
+ access_key_id 'access_key_id'
95
+ secret_access_key 'secret_access_key'
96
+ bucket '/bucket/backups/mysql/'
97
+ use_ssl true
98
+ end
99
+
100
+ keep_backups 25
101
+ encrypt_with_password 'password'
102
+ notify false
103
+
104
+ end
105
+
106
+
107
+ # Initialize with:
108
+ # rake backup:run trigger='postgresql-backup-s3'
109
+ backup 'postgresql-backup-scp' do
110
+
111
+ adapter :postgresql do
112
+ user 'user'
113
+ database 'database'
114
+
115
+ # skip_tables ['table1', 'table2', 'table3']
116
+
117
+ # options do
118
+ # host '123.45.678.90'
119
+ # port '80'
120
+ # socket '/tmp/socket.sock'
121
+ # end
122
+ # additional_options '--clean --blobs'
123
+ end
124
+
125
+ storage :scp do
126
+ ip 'example.com'
127
+ user 'user'
128
+ password 'password'
129
+ path '/var/backups/postgresql/'
130
+ end
131
+
132
+ keep_backups :all
133
+ encrypt_with_password false
134
+ notify false
135
+
136
+ end
137
+
138
+
139
+ # Initialize with:
140
+ # rake backup:run trigger='archive-backup-ftp'
141
+ backup 'archive-backup-ftp' do
142
+
143
+ adapter :archive do
144
+ files ["#{RAILS_ROOT}/log", "#{RAILS_ROOT}/db"]
145
+ end
146
+
147
+ storage :ftp do
148
+ ip 'example.com'
149
+ user 'user'
150
+ password 'password'
151
+ path '/var/backups/archive/'
152
+ end
153
+
154
+ keep_backups 10
155
+ encrypt_with_password false
156
+ notify false
157
+
158
+ end
159
+
160
+
161
+ # Initialize with:
162
+ # rake backup:run trigger='custom-backup-sftp'
163
+ backup 'custom-backup-sftp' do
164
+
165
+ adapter :custom do
166
+ commands \
167
+ [ "mysqldump [options] [database] > :tmp_path/my_mysql_dump.sql",
168
+ "pg_dump [options] [database] > :tmp_path/my_postgresql_dump.sql",
169
+ "any_other_db_format [options] [database] > :tmp_path/my_any_other_db_format.sql" ]
170
+ end
171
+
172
+ storage :sftp do
173
+ ip 'example.com'
174
+ user 'user'
175
+ password 'password'
176
+ path '/var/backups/custom/'
177
+ end
178
+
179
+ keep_backups :all
180
+ encrypt_with_password 'password'
181
+ notify false
182
+
183
+ end
184
+
185
+
186
+ # Initializ with:
187
+ # rake backup:run trigger='sqlite-backup-local'
188
+ backup 'sqlite-backup-local' do
189
+
190
+ adapter :sqlite do
191
+ database "#{RAILS_ROOT}/db/production.sqlite3"
192
+ end
193
+
194
+ storage :local do
195
+ path "/path/to/storage/location/"
196
+ end
197
+
198
+ keep_backups :all
199
+ encrypt_with_password false
200
+ notify false
201
+
202
+ end