simple_backup 0.4.0 → 0.4.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0469f56e22f8ab0f509e8a51eb8ffdfd820ac023
4
- data.tar.gz: 17b0d6e3a9c824e2e49567dda5d9eeacc2f76044
3
+ metadata.gz: 6c6501e16071df57faa608b6f7a1d9b39de67286
4
+ data.tar.gz: 7b34e18d1444980aa6e45573e11f4323231dea09
5
5
  SHA512:
6
- metadata.gz: 89f78bb4979170c15b9c2467e7cadb1d70889b67ec46786e1aff3732a417e59aac3af0b5c03cd311be76ae346d5a69a5e3f41064a61ee805040ce2f097daeb5f
7
- data.tar.gz: 6c28e913f0964292ec9013ca023391da1880213026f5bc0bce1583b1443b742aafdd60ee757aa4f99ea24f1b672d7e45033697f70cbce6ffa1d2457f5805332d
6
+ metadata.gz: a44d236089f3f903b5e8463f0b7a588bb596d94d9d460376a69581aa3140170bef4377aa0010f4d13d012c4e80ea80524c7d35f8b95ff8d7526f44416cdf07e9
7
+ data.tar.gz: a41711c5c5d4cf7a3da7191a3e5767d01bdb18efe18435b394f45678380be6c05fcde25b327d4ae65cfc933d4fddac5a8cd7ae35ab8778be1f7e5330d1c7100e
data/backup_example.rb CHANGED
@@ -15,7 +15,18 @@ SimpleBackup.define do
15
15
 
16
16
  default_keep_last 9
17
17
 
18
+ mailer do
19
+ subject_prefix '[BACKUP]'
20
+
21
+ from 'backup@localhost'
22
+ to 'root@localhost'
23
+ cc 'rb@localhost'
24
+ bcc 'root@localhost'
25
+ end
26
+
18
27
  sources do
28
+ # tmp_dir '/tmp/tmp'
29
+
19
30
  dir 'app-1', path: '/home/app/app-1', type: :capistrano, backends: 'backup'
20
31
  dir 'app-2', path: '/home/app/app-2', backends: :none
21
32
  dir 'none', path: '/none'
@@ -28,7 +39,7 @@ SimpleBackup.define do
28
39
  end
29
40
 
30
41
  backends do
31
- local 'backup', path: '/srv/backup'
42
+ local 'backup', path: '/tmp/backup'
32
43
  end
33
44
 
34
45
  mysql do
@@ -37,13 +48,4 @@ SimpleBackup.define do
37
48
  user 'root'
38
49
  pass 'root'
39
50
  end
40
-
41
- mailer do
42
- subject_prefix '[BACKUP]'
43
-
44
- from 'backup@localhost'
45
- to 'root@localhost'
46
- cc 'rb@localhost'
47
- bcc 'root@localhost'
48
- end
49
51
  end
@@ -1,4 +1,6 @@
1
+ require 'fileutils'
1
2
  require 'rubygems/package'
3
+ require 'securerandom'
2
4
  require 'tmpdir'
3
5
  require 'zlib'
4
6
 
@@ -6,6 +8,7 @@ module SimpleBackup
6
8
  module Source
7
9
  class Abstract
8
10
  @@logger = Utils::Logger.instance
11
+ @tmp_base_path = nil
9
12
 
10
13
  def configure(options = {})
11
14
  raise NotImplementedError
@@ -27,6 +30,10 @@ module SimpleBackup
27
30
  @name
28
31
  end
29
32
 
33
+ def tmp_base_path=(value)
34
+ @tmp_base_path = value
35
+ end
36
+
30
37
  def type
31
38
  self.class.name.split('::').last.gsub(/[^a-zA-Z0-9\-\_\. ]*/, '').gsub(/\s+/, '_').downcase
32
39
  end
@@ -40,9 +47,7 @@ module SimpleBackup
40
47
 
41
48
  @@logger.scope_start :info, "Getting archive for: #{desc}"
42
49
 
43
- @tmp_dir = ::Dir.mktmpdir('simple_backup-')
44
- @@logger.debug "Created tmp directory #{@tmp_dir}"
45
-
50
+ prepare_tmp_dir
46
51
  data_exists = prepare_data
47
52
 
48
53
  @@logger.warning "No data for: #{desc}" unless data_exists
@@ -87,7 +92,7 @@ module SimpleBackup
87
92
 
88
93
  def archive_data
89
94
  filename = "#{type}-#{name}.#{SimpleBackup::TIMESTAMP}.tar.gz"
90
- @backup_file = ::File.join(::Dir.tmpdir, filename)
95
+ @backup_file = ::File.join(get_tmp, filename)
91
96
 
92
97
  ::File.open(backup_file, 'w') do |f|
93
98
  f.write targz.string
@@ -96,6 +101,20 @@ module SimpleBackup
96
101
  @@logger.debug "Backup saved to temporary file #{backup_file}"
97
102
  end
98
103
 
104
+ def prepare_tmp_dir
105
+ @tmp_dir = ::File.join(get_tmp, "simple_backup-#{SimpleBackup::TIMESTAMP}-#{SecureRandom.uuid}")
106
+ FileUtils.mkdir_p @tmp_dir, mode: 0700
107
+
108
+ @@logger.debug "Created tmp directory #{@tmp_dir}"
109
+ end
110
+
111
+ def get_tmp
112
+ tmp = @tmp_base_path
113
+ tmp = ::Dir.tmpdir unless tmp
114
+
115
+ tmp
116
+ end
117
+
99
118
  def targz
100
119
  path = @tmp_dir
101
120
 
@@ -6,6 +6,7 @@ module SimpleBackup
6
6
  include Singleton
7
7
 
8
8
  @@logger = Utils::Logger.instance
9
+ @tmp_dir = nil
9
10
 
10
11
  def initialize
11
12
  @sources = {}
@@ -16,6 +17,14 @@ module SimpleBackup
16
17
  @default_keep_last = value
17
18
  end
18
19
 
20
+ def tmp_dir(path)
21
+ raise "Temporary path '#{path}' does not exists" unless ::File.exist?(path)
22
+ raise "Temporary path '#{path}' is not a directory" unless ::File.directory?(path)
23
+ raise "Temporary path '#{path}' is not writable" unless ::File.writable?(path)
24
+ @tmp_dir = path
25
+ @@logger.info "Replaced temporary path to '#{@tmp_dir}'"
26
+ end
27
+
19
28
  def each(&block)
20
29
  @sources.each do |type, sources|
21
30
  sources.each(&block)
@@ -52,6 +61,7 @@ module SimpleBackup
52
61
  source.keep_last = @default_keep_last
53
62
  source.keep_last = options[:keep_last] if options[:keep_last]
54
63
  source.backends = options[:backends] if options[:backends]
64
+ source.tmp_base_path = @tmp_dir if @tmp_dir
55
65
  source.name = name
56
66
 
57
67
  source.configure(options)
@@ -2,7 +2,7 @@ module SimpleBackup
2
2
  class Version
3
3
  MAJOR = 0
4
4
  MINOR = 4
5
- PATCH = 0
5
+ PATCH = 1
6
6
  PRE_RELEASE = nil
7
7
 
8
8
  def self.get
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomasz Maczukin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-21 00:00:00.000000000 Z
11
+ date: 2015-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake