rbarman 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rbarman/backup.rb +11 -1
- data/lib/rbarman/cli_command.rb +22 -16
- data/lib/rbarman/server.rb +4 -0
- data/lib/rbarman/version.rb +1 -1
- data/lib/rbarman/wal_file.rb +4 -0
- metadata +21 -5
- checksums.yaml +0 -7
data/lib/rbarman/backup.rb
CHANGED
@@ -13,6 +13,9 @@ module RBarman
|
|
13
13
|
# @return [String, nil] name of the server to which the backup belongs.
|
14
14
|
attr_accessor :server
|
15
15
|
|
16
|
+
# @return [Integer, nil] the backup's PostgreSQL version
|
17
|
+
attr_accessor :pg_version
|
18
|
+
|
16
19
|
# @overload id
|
17
20
|
# @return [String, nil] id (like '20130304T080002') which identifies
|
18
21
|
# the backup and is unique among all backups of a server.
|
@@ -211,7 +214,14 @@ module RBarman
|
|
211
214
|
if @begin_wal.xlog == xlog.to_s.rjust(8,'0')
|
212
215
|
start = @begin_wal.segment.to_i(16)
|
213
216
|
end
|
214
|
-
|
217
|
+
|
218
|
+
# http://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3#WAL_filenames_may_end_in_FF
|
219
|
+
end_segment = 255
|
220
|
+
if @pg_version.nil? || @pg_version < 90300
|
221
|
+
end_segment = 254
|
222
|
+
end
|
223
|
+
|
224
|
+
(start..end_segment).each do |seg|
|
215
225
|
w = WalFile.new
|
216
226
|
w.timeline = @begin_wal.timeline
|
217
227
|
w.xlog = xlog.rjust(8,'0')
|
data/lib/rbarman/cli_command.rb
CHANGED
@@ -117,13 +117,13 @@ module RBarman
|
|
117
117
|
def wal_files(server, backup_id)
|
118
118
|
lines = run_barman_command("list-files --target wal #{server} #{backup_id}")
|
119
119
|
wal_files = parse_wal_files_list(lines)
|
120
|
-
|
120
|
+
xlog_db = read_xlog_db(server)
|
121
121
|
wal_files.each do |w|
|
122
122
|
wal = "#{w.timeline}#{w.xlog}#{w.segment}"
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
123
|
+
entry = xlog_db[wal]
|
124
|
+
w.size = entry[:size]
|
125
|
+
w.compression = entry[:compression].downcase.to_sym
|
126
|
+
w.created = entry[:created].to_i
|
127
127
|
end
|
128
128
|
return wal_files
|
129
129
|
end
|
@@ -162,6 +162,8 @@ module RBarman
|
|
162
162
|
s.base_backups_dir = value
|
163
163
|
when "wals_directory"
|
164
164
|
s.wals_dir = value
|
165
|
+
when "server_txt_version"
|
166
|
+
s.pg_version = value
|
165
167
|
end
|
166
168
|
end
|
167
169
|
return s
|
@@ -249,21 +251,12 @@ module RBarman
|
|
249
251
|
backup.end_wal = WalFile.parse(value)
|
250
252
|
when "pgdata"
|
251
253
|
backup.pgdata = value
|
254
|
+
when "version"
|
255
|
+
backup.pg_version = value.to_i
|
252
256
|
end
|
253
257
|
end
|
254
258
|
end
|
255
259
|
|
256
|
-
# Assigns size, created and compression values to a {WalFile} by parsing a line from xlog.db
|
257
|
-
# @param [WalFile] wal_file the wal file
|
258
|
-
# @param [String] line a string like '00000001000005A9000000BC\\t4684503\t1360568429.0\\tbzip2'
|
259
|
-
# @return [void]
|
260
|
-
def wal_file_info_from_xlog_db_line(wal_file, line)
|
261
|
-
splitted = line.split("\t")
|
262
|
-
wal_file.size = splitted[1]
|
263
|
-
wal_file.created = splitted[2].to_i
|
264
|
-
wal_file.compression = splitted[3].downcase.to_sym
|
265
|
-
end
|
266
|
-
|
267
260
|
# Converts the size according to the unit to bytes
|
268
261
|
# @param [Numeric] size the size
|
269
262
|
# @param [String] unit the unit, like `B`, `KiB`, `MiB`, `GiB` or `TiB`
|
@@ -356,5 +349,18 @@ module RBarman
|
|
356
349
|
def file_content(path)
|
357
350
|
return File.readlines(path).map { |l| l.chomp }
|
358
351
|
end
|
352
|
+
|
353
|
+
def read_xlog_db(server)
|
354
|
+
result = Hash.new
|
355
|
+
File.readlines("#{@barman_home}/#{server}/wals/xlog.db").each do |line|
|
356
|
+
splitted = line.chomp.split("\t")
|
357
|
+
result[splitted[0]] = {
|
358
|
+
:size => splitted[1],
|
359
|
+
:created => splitted[2],
|
360
|
+
:compression => splitted[3].downcase.to_sym
|
361
|
+
}
|
362
|
+
end
|
363
|
+
result
|
364
|
+
end
|
359
365
|
end
|
360
366
|
end
|
data/lib/rbarman/server.rb
CHANGED
@@ -45,6 +45,10 @@ module RBarman
|
|
45
45
|
# @return [Backups, nil] server backups
|
46
46
|
attr_accessor :backups
|
47
47
|
|
48
|
+
# @param [String] PostgreSQL version
|
49
|
+
# @return [String] PostgreSQL version
|
50
|
+
attr_accessor :pg_version
|
51
|
+
|
48
52
|
|
49
53
|
# Creates a new instance of {Server}
|
50
54
|
def initialize(name)
|
data/lib/rbarman/version.rb
CHANGED
data/lib/rbarman/wal_file.rb
CHANGED
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbarman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Holger Amann
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
12
|
+
date: 2013-10-21 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ~>
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: rake
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - '>='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - '>='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: rspec
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :development
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: mixlib-shellout
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -88,25 +97,32 @@ files:
|
|
88
97
|
homepage: https://github.com/sauspiel/rbarman
|
89
98
|
licenses:
|
90
99
|
- MIT
|
91
|
-
metadata: {}
|
92
100
|
post_install_message:
|
93
101
|
rdoc_options: []
|
94
102
|
require_paths:
|
95
103
|
- lib
|
96
104
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
97
106
|
requirements:
|
98
107
|
- - '>='
|
99
108
|
- !ruby/object:Gem::Version
|
100
109
|
version: '0'
|
110
|
+
segments:
|
111
|
+
- 0
|
112
|
+
hash: -547344130825939559
|
101
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
102
115
|
requirements:
|
103
116
|
- - '>='
|
104
117
|
- !ruby/object:Gem::Version
|
105
118
|
version: '0'
|
119
|
+
segments:
|
120
|
+
- 0
|
121
|
+
hash: -547344130825939559
|
106
122
|
requirements: []
|
107
123
|
rubyforge_project:
|
108
|
-
rubygems_version:
|
124
|
+
rubygems_version: 1.8.25
|
109
125
|
signing_key:
|
110
|
-
specification_version:
|
126
|
+
specification_version: 3
|
111
127
|
summary: Wrapper for 2ndQuadrant's PostgreSQL backup tool 'barman'
|
112
128
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 51204ed022e1cb170e2b95a345423251ce9cfbfb
|
4
|
-
data.tar.gz: 02c0228594aaea19f4e6526645b74212ca55d895
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 2f0e62639147bab58e67c0067f8590217dc267337ca40d72362d4e90eeb9372db410937627e4cb57012369fc2a625c2c782fc463237efb772667e2ae1815ef65
|
7
|
-
data.tar.gz: fb0fc2ff0e19e5d5a711ac03add7a53a2f1ff740140c9d8d11ff9e49747de6295e8c5a5fcd3a9899b2f8e5b3b43e2d66f40ceb370cfb5b387fd2fae5ac9629bd
|