outback 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,7 @@
1
+ *0.0.7 (March 12,2012)*
2
+
3
+ * Fixed active_support dependency
4
+ * Improved output
5
+
6
+ *0.0.6 (January 24, 2012)*
7
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
@@ -23,10 +23,11 @@ module Outback
23
23
  archive_name = Pathname.new(tmpdir).join("#{backup_name}_#{timestamp}_#{source_name}.tar.gz")
24
24
  exclude_list = Pathname.new(tmpdir).join('exclude_list.txt')
25
25
  File.open(exclude_list, 'w') { |f| f << excludes.join("\n") }
26
- commandline = "tar --create --file #{archive_name} --preserve-permissions --gzip --exclude-from #{exclude_list} #{source_dir}"
26
+ commandline = "tar --create --file #{archive_name} --preserve-permissions --gzip --exclude-from #{exclude_list} --directory / #{source_dir.to_s.sub(/\A\//, '')}"
27
27
  Outback.debug "executing command: #{commandline}"
28
28
  result = `#{commandline}`
29
- #Outback.debug result
29
+ Outback.debug "result: #{result}"
30
+ Outback.info "archived directory #{path}"
30
31
  [TempArchive.new(archive_name, self)]
31
32
  end
32
33
  end
@@ -33,7 +33,7 @@ module Outback
33
33
  end
34
34
  size += archived_file.size
35
35
  end
36
- Outback.debug "#{move ? 'Moved' : 'Copied'} #{archives.size} archives (#{size} bytes) to directory #{path}"
36
+ Outback.info "#{move ? 'Moved' : 'Copied'} #{archives.size} archives (#{size} bytes) to directory #{path}"
37
37
  end
38
38
 
39
39
  def list_archives(name)
@@ -41,6 +41,7 @@ module Outback
41
41
  commandline = "mysqldump --defaults-extra-file=#{mysql_conf_file} --opt --user=#{user} --host=#{mysql_host} --port=#{mysql_port} #{database} | gzip > #{archive_name}"
42
42
  result = `#{commandline}`.strip
43
43
  Outback.debug(result) unless result.blank?
44
+ Outback.info "archived database #{database}"
44
45
  TempArchive.new(archive_name, self).tap { |archive| Outback.debug "dumped #{archive.filename.basename} with #{archive.size} bytes" }
45
46
  end
46
47
  end
@@ -13,14 +13,20 @@ module Outback
13
13
 
14
14
  def put(archives)
15
15
  connect
16
+ size, count = 0, 0
16
17
  archives.each do |archive|
17
18
  object_name = [prefix.to_s, archive.filename.basename.to_s].join('/')
18
19
  Outback.debug "S3Target: storing #{archive.filename} in s3://#{bucket}/#{object_name}"
19
20
  AWS::S3::S3Object.store object_name, archive.open, bucket
20
- object_exists = AWS::S3::S3Object.exists?(object_name, bucket)
21
- Outback.debug "Checking if object exists: #{object_exists}"
21
+ if AWS::S3::S3Object.exists?(object_name, bucket)
22
+ size += archive.size
23
+ count += 1
24
+ else
25
+ Outback.error "S3 archive upload failed: #{object_name}"
26
+ end
22
27
  end
23
- Outback.debug "Uploaded #{archives.sum(&:size)} bytes to S3"
28
+ Outback.debug "Uploaded #{size} bytes to S3"
29
+ Outback.info "Uploaded #{count} archives (#{size} bytes) to bucket s3://#{bucket}"
24
30
  end
25
31
 
26
32
  def list_archives(name)
@@ -3,6 +3,8 @@ module Outback
3
3
 
4
4
  def self.included(base)
5
5
  base.extend ClassMethods
6
+ base.class_attribute :attributes
7
+ base.attributes = []
6
8
  end
7
9
 
8
10
  module ClassMethods
@@ -19,10 +21,6 @@ module Outback
19
21
  names.each { |name| attr_reader name }
20
22
  end
21
23
 
22
- def attributes
23
- read_inheritable_attribute(:attributes) || write_inheritable_attribute(:attributes, [])
24
- end
25
-
26
24
  end
27
25
 
28
26
  def attr_setter
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: outback
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 6
10
- version: 0.0.6
9
+ - 7
10
+ version: 0.0.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matthias Grosser
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-01-12 00:00:00 +01:00
19
+ date: 2012-03-12 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -41,16 +41,16 @@ dependencies:
41
41
  requirements:
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- hash: 11
44
+ hash: 7
45
45
  segments:
46
- - 2
47
- - 1
46
+ - 3
48
47
  - 0
49
- version: 2.1.0
48
+ - 0
49
+ version: 3.0.0
50
50
  type: :runtime
51
51
  version_requirements: *id002
52
52
  description: A Ruby backup tool
53
- email: mg@onrooby.com
53
+ email: admin@onrooby.com
54
54
  executables:
55
55
  - outback
56
56
  extensions: []
@@ -85,7 +85,7 @@ files:
85
85
  - bin/outback
86
86
  - MIT-LICENSE
87
87
  - VERSION
88
- - README
88
+ - CHANGELOG
89
89
  has_rdoc: true
90
90
  homepage: http://rubygems.org/gems/outback
91
91
  licenses: []
data/README DELETED
@@ -1,112 +0,0 @@
1
- == Welcome to Outback
2
-
3
- Outback is a Ruby backup tool, enabling you to create backups of
4
- your server files and databases and storing them in a local or
5
- remote repository.
6
-
7
- Using a simple DSL, you can specify multiple sources that generate
8
- backup data, as well as multiple targets, where backups are going
9
- to be stored.
10
-
11
- Outback configuration files are pure Ruby, so writing dynamic
12
- configurations or even customized backup sources and targets is a
13
- piece of cake.
14
-
15
-
16
- == A simple configuration example
17
-
18
- # You can instantiate as many configurations as you like
19
- # Outback will enqueue and execute all configurations that were
20
- # instantiated during a single run.
21
-
22
- Outback::Configuration.new 'name' do
23
- source :directory, '/ver/www' do
24
- exclude '/var/www/foo'
25
- exclude '/var/www/icons/*.png'
26
- end
27
-
28
- source :mysql do
29
- user 'mysqlusername'
30
- password 'mysqlpassword'
31
- host 'localhost'
32
- exclude 'mysql', 'information_schema'
33
-
34
- #
35
- # If you do not specify a specific database, all databases
36
- # will be dumped and included in the backup
37
- # database 'specific_database'
38
- end
39
-
40
- # Amazon S3 storage
41
- target :s3 do
42
- access_key 'S3 access key'
43
- secret_key 'S3 secret key'
44
- bucket 'bucketname'
45
- prefix 'backups/daily'
46
-
47
- # Backups will be purged after the time specified here.
48
- # Just omit the definition to keep archives forever.
49
- ttl 1.month
50
- end
51
-
52
- # Store on a local filesystem path
53
- target :directory, '/media/backups/daily' do
54
- # If you specify the move option, archives will be moved from the temporary
55
- # filesystem location in order to speed up things. Otherwise, archives will
56
- # be copied. Note that a 'move'-to target must be specified last in the target
57
- # chain.
58
- move true
59
- ttl 1.day
60
- user 'root'
61
- group 'root'
62
- directory_permissions 0700
63
- archive_permissions 0600
64
- end
65
- end
66
-
67
-
68
- == Default configurations and commandline options
69
-
70
- If you place your backup configurations in the file /etc/outback.conf they
71
- will be read automatically when the outback executable is invoked. Make
72
- sure to have correct permissions on the configuration files, as they might
73
- include database passwords.
74
-
75
- Alternatively, you can pass in the configuration file to read as a
76
- commandline argument. The default configuration file in /etc will then be
77
- ignored.
78
-
79
- If you have several backup configurations in a single file, say, for daily
80
- and monthly backups, you can use the -c commandline option to select the
81
- backup to be invoked:
82
-
83
- $ outback -c 'myservername-daily'
84
-
85
- This will run only the backup with the specified name, which enables you to
86
- write DRY configurations like this:
87
-
88
- { :daily => [14.days, 5.days], :monthly => [1.year, 1.year] }.each do |frequency, ttls|
89
- s3_ttl, directory_ttl = ttls
90
-
91
- Outback::Configuration.new "yourserver-#{frequency}" do
92
- source :directory, '/home'
93
- source :directory, '/var/svn'
94
-
95
- target :s3 do
96
- access_key 'foo'
97
- secret_key 'foo'
98
- bucket 'somebucket'
99
- prefix "yourserver/#{frequency}"
100
- ttl s3_ttl
101
- end
102
-
103
- target :directory, "/media/backups/#{frequency}" do
104
- move true
105
- ttl directory_ttl
106
- user 'root'
107
- group 'root'
108
- directory_permissions 0700
109
- archive_permissions 0600
110
- end
111
- end
112
- end