outback 0.0.6 → 0.0.7

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 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