s3_db_assets_backup 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -13,7 +13,7 @@ Then run
13
13
 
14
14
  bundle install
15
15
 
16
- Create the backup rake tasks, config file, and initializer.
16
+ Create the config file.
17
17
 
18
18
  rails g s3_backup
19
19
 
@@ -47,6 +47,14 @@ Optionally setup cron to do your backups with the following crontab
47
47
  # asset backup every wednesday at 11:30
48
48
  30 23 * * 3 cd /path/to/your/project && /var/lib/gems/1.8/bin/rake assets:backup
49
49
 
50
+ Running RVM and Ruby 1.9.2, I had to setup cron like this (rvm is loaded in .profile).
51
+
52
+ SHELL=/bin/bash
53
+ HOME=/home/ubuntu
54
+
55
+ # db backup every day at 11:01
56
+ 01 23 * * * source ~/.profile && cd /home/ubuntu/cpos && rake db:backup RAILS_ENV=production
57
+
50
58
  == Troubleshooting and FAQs
51
59
 
52
60
  <b>I get "cannot create ./tmp/production_dump-YYYY-MM-DD-HH-MM-SS.sql.gz: Directory nonexistent" when running the database backup to S3</b>
@@ -1,6 +1,6 @@
1
1
  config_file = "#{RAILS_ROOT}/config/s3_backup_config.yml"
2
2
  if FileTest.exists?(config_file)
3
- S3_CONFIG = YAML.load_file(config_file)
3
+ S3_CONFIG = YAML.load_file(config_file)[RAILS_ENV].symbolize_keys
4
4
  else
5
5
  raise "Can't find s3_backup_config.yml"
6
6
  end
@@ -1,11 +1,25 @@
1
- # amazon aws credentials
2
- access_key_id: your-aws-access-key-id
3
- secret_access_key: your-aws-secret-access-key
1
+ development:
2
+ # amazon aws credentials
3
+ access_key_id: your-aws-access-key-id
4
+ secret_access_key: your-aws-secret-access-key
4
5
 
5
- # bucket you would like to use for backups
6
- bucket: your_existing_s3_bucket
6
+ # bucket you would like to use for backups
7
+ bucket: your_existing_s3_bucket
7
8
 
8
- # how many backups would you like to keep for
9
- # the database and public folder
10
- database_backups_to_keep: 8
11
- assets_backups_to_keep: 3
9
+ # how many backups would you like to keep for
10
+ # the database and public folder
11
+ database_backups_to_keep: 8
12
+ assets_backups_to_keep: 3
13
+
14
+ production:
15
+ # amazon aws credentials
16
+ access_key_id: your-aws-access-key-id
17
+ secret_access_key: your-aws-secret-access-key
18
+
19
+ # bucket you would like to use for backups
20
+ bucket: your_existing_s3_bucket
21
+
22
+ # how many backups would you like to keep for
23
+ # the database and public folder
24
+ database_backups_to_keep: 8
25
+ assets_backups_to_keep: 3
@@ -5,8 +5,8 @@ require 'aws/s3'
5
5
  namespace :assets do
6
6
  desc "Backup everything in the public folder."
7
7
  task :backup => [:environment] do
8
- AWS::S3::Base.establish_connection!(:access_key_id => S3_CONFIG['access_key_id'], :secret_access_key => S3_CONFIG['secret_access_key'])
9
- BUCKET = S3_CONFIG['bucket']
8
+ AWS::S3::Base.establish_connection!(:access_key_id => S3_CONFIG[:access_key_id], :secret_access_key => S3_CONFIG[:secret_access_key])
9
+ BUCKET = S3_CONFIG[:bucket]
10
10
 
11
11
  datestamp = Time.now.strftime("%Y-%m-%d-%H-%M-%S")
12
12
  base_path = ENV["RAILS_ROOT"] || "."
@@ -19,7 +19,7 @@ namespace :assets do
19
19
 
20
20
  bucket = AWS::S3::Bucket.find(BUCKET)
21
21
  all_backups = bucket.objects.select { |f| f.key.match(/assets/) }.sort { |a,b| a.key <=> b.key }.reverse
22
- max_backups = S3_CONFIG['assets_backups_to_keep'].to_i || 28
22
+ max_backups = S3_CONFIG[:assets_backups_to_keep].to_i || 28
23
23
  unwanted_backups = all_backups[max_backups..-1] || []
24
24
  for unwanted_backup in unwanted_backups
25
25
  unwanted_backup.delete
@@ -33,8 +33,8 @@ namespace :assets do
33
33
  desc "Restore the public folder from an available backup."
34
34
  task :restore => [:environment] do
35
35
  base_path = ENV["RAILS_ROOT"] || "."
36
- AWS::S3::Base.establish_connection!(:access_key_id => S3_CONFIG['access_key_id'], :secret_access_key => S3_CONFIG['secret_access_key'])
37
- bucket_name = S3_CONFIG['bucket']
36
+ AWS::S3::Base.establish_connection!(:access_key_id => S3_CONFIG[:access_key_id], :secret_access_key => S3_CONFIG[:secret_access_key])
37
+ bucket_name = S3_CONFIG[:bucket]
38
38
  backups = AWS::S3::Bucket.objects(bucket_name).select { |f| f.key.match(/assets/) }
39
39
  if backups.size == 0
40
40
  puts "no backups available, check your settings in config/s3_backup_config.yml"
@@ -5,8 +5,8 @@ require 'aws/s3'
5
5
  namespace :db do
6
6
  desc "Backup the database to a file. Options: RAILS_ENV=production"
7
7
  task :backup => [:environment] do
8
- AWS::S3::Base.establish_connection!(:access_key_id => S3_CONFIG['access_key_id'], :secret_access_key => S3_CONFIG['secret_access_key'])
9
- BUCKET = S3_CONFIG['bucket']
8
+ AWS::S3::Base.establish_connection!(:access_key_id => S3_CONFIG[:access_key_id], :secret_access_key => S3_CONFIG[:secret_access_key])
9
+ BUCKET = S3_CONFIG[:bucket]
10
10
 
11
11
  datestamp = Time.now.strftime("%Y-%m-%d-%H-%M-%S")
12
12
  base_path = ENV["RAILS_ROOT"] || "."
@@ -20,7 +20,7 @@ namespace :db do
20
20
 
21
21
  bucket = AWS::S3::Bucket.find(BUCKET)
22
22
  all_backups = bucket.objects.select { |f| f.key.match(/dump/) }.sort { |a,b| a.key <=> b.key }.reverse
23
- max_backups = S3_CONFIG['database_backups_to_keep'].to_i || 28
23
+ max_backups = S3_CONFIG[:database_backups_to_keep].to_i || 28
24
24
  unwanted_backups = all_backups[max_backups..-1] || []
25
25
  for unwanted_backup in unwanted_backups
26
26
  unwanted_backup.delete
@@ -35,8 +35,8 @@ namespace :db do
35
35
  task :restore => [:environment] do
36
36
  base_path = ENV["RAILS_ROOT"] || "."
37
37
  db_config = ActiveRecord::Base.configurations[RAILS_ENV]
38
- AWS::S3::Base.establish_connection!(:access_key_id => S3_CONFIG['access_key_id'], :secret_access_key => S3_CONFIG['secret_access_key'])
39
- bucket_name = S3_CONFIG['bucket']
38
+ AWS::S3::Base.establish_connection!(:access_key_id => S3_CONFIG[:access_key_id], :secret_access_key => S3_CONFIG[:secret_access_key])
39
+ bucket_name = S3_CONFIG[:bucket]
40
40
  backups = AWS::S3::Bucket.objects(bucket_name).select { |f| f.key.match(/dump/) }
41
41
  if backups.size == 0
42
42
  puts "no backups available, check your settings in config/s3_backup_config.yml"
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3_db_assets_backup
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 0
9
- version: 0.1.0
4
+ prerelease:
5
+ version: 0.1.1
10
6
  platform: ruby
11
7
  authors:
12
8
  - Chris Barnes
@@ -14,8 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-01-07 00:00:00 -05:00
18
- default_executable:
13
+ date: 2012-04-25 00:00:00 Z
19
14
  dependencies: []
20
15
 
21
16
  description: Generates rake tasks for backing up and restoring your database and public folder (which should also contain any uploaded assets) to and from an existing bucket in your Amazon S3 account. The rake tasks compresses and uploads each backup with a time stamp and the config file allows you to set how many of each backup to keep. This gem is based on (http://www.magnionlabs.com/2009/7/7/db-backups).
@@ -36,7 +31,6 @@ files:
36
31
  - lib/s3_db_assets_backup.rb
37
32
  - config/initializers/load_s3_backup_config.rb
38
33
  - README.rdoc
39
- has_rdoc: true
40
34
  homepage: http://www.randomutterings.com/projects/s3_db_assets_backup
41
35
  licenses: []
42
36
 
@@ -50,21 +44,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
50
44
  requirements:
51
45
  - - ">="
52
46
  - !ruby/object:Gem::Version
53
- segments:
54
- - 0
55
47
  version: "0"
56
48
  required_rubygems_version: !ruby/object:Gem::Requirement
57
49
  none: false
58
50
  requirements:
59
51
  - - ">="
60
52
  - !ruby/object:Gem::Version
61
- segments:
62
- - 0
63
53
  version: "0"
64
54
  requirements: []
65
55
 
66
56
  rubyforge_project:
67
- rubygems_version: 1.3.7
57
+ rubygems_version: 1.8.23
68
58
  signing_key:
69
59
  specification_version: 3
70
60
  summary: Generates rake tasks for backing up and restoring db and public folder to and from an existing S3 bucket