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
|
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,11 +1,25 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
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[
|
9
|
-
BUCKET = S3_CONFIG[
|
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[
|
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[
|
37
|
-
bucket_name = S3_CONFIG[
|
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[
|
9
|
-
BUCKET = S3_CONFIG[
|
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[
|
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[
|
39
|
-
bucket_name = S3_CONFIG[
|
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:
|
5
|
-
|
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:
|
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.
|
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
|