simple_backup 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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