simple_backup 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/simple_backup/source/abstract.rb +49 -4
- data/lib/simple_backup/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a281206ca34146fbe261483ab464cfb2d9e9c934
|
4
|
+
data.tar.gz: 847bfd234169f3978b1069f23ff1d47d337879bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55bb14585531c81f92054e8415e6a8f3691740b77e897ddaef8c2e0a838f9db4af2aed2f7e2c00674c97894491f4ce7ec14b40ddc505e566e91d50a8c3d38cc6
|
7
|
+
data.tar.gz: 11dbe49c154974c73e59b852e665938e868226c69b9ae8ea260517a01cd7d7d4c6b6fe53bbf46fa787015f3dbf4d152215417682fc4e5abcf4f6b6833e42f41e
|
@@ -5,6 +5,51 @@ require 'tmpdir'
|
|
5
5
|
require 'tempfile'
|
6
6
|
require 'zlib'
|
7
7
|
|
8
|
+
class Gem::Package::TarWriter
|
9
|
+
LONGLINK_NAME = '././@LongLink'
|
10
|
+
|
11
|
+
def add_long_link(name, mode)
|
12
|
+
check_closed
|
13
|
+
|
14
|
+
raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
|
15
|
+
|
16
|
+
init_pos = @io.pos
|
17
|
+
@io.write "\0" * 512 # placeholder for the header
|
18
|
+
@io.write name
|
19
|
+
size = @io.pos - init_pos - 512
|
20
|
+
|
21
|
+
remainder = (512 - (size % 512)) % 512
|
22
|
+
@io.write "\0" * remainder
|
23
|
+
|
24
|
+
final_pos = @io.pos
|
25
|
+
@io.pos = init_pos
|
26
|
+
|
27
|
+
header = Gem::Package::TarHeader.new name: LONGLINK_NAME, mode: mode,
|
28
|
+
size: size, prefix: '',
|
29
|
+
typeflag: 'L'
|
30
|
+
|
31
|
+
@io.write header
|
32
|
+
@io.pos = final_pos
|
33
|
+
|
34
|
+
self
|
35
|
+
end
|
36
|
+
|
37
|
+
def add_longname_file(*arguments)
|
38
|
+
tries ||= 1
|
39
|
+
if block_given?
|
40
|
+
add_file(*arguments, &Proc.new)
|
41
|
+
else
|
42
|
+
add_file(*arguments)
|
43
|
+
end
|
44
|
+
rescue Gem::Package::TooLongFileName => e
|
45
|
+
add_long_link *arguments
|
46
|
+
arguments.first.slice!(0, 100)
|
47
|
+
|
48
|
+
retry if (tries -= 1) >= 0
|
49
|
+
raise e
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
8
53
|
module SimpleBackup
|
9
54
|
module Source
|
10
55
|
class Abstract
|
@@ -117,7 +162,7 @@ module SimpleBackup
|
|
117
162
|
@@logger.debug tempfile.path
|
118
163
|
|
119
164
|
Gem::Package::TarWriter.new(tempfile) do |tar|
|
120
|
-
@@logger.debug "
|
165
|
+
@@logger.debug "Opened tar archive #{tar}"
|
121
166
|
::Dir[::File.join(path, '**/*')].each do |file|
|
122
167
|
@@logger.debug "Adding file #{file}"
|
123
168
|
mode = ::File.stat(file).mode
|
@@ -126,9 +171,9 @@ module SimpleBackup
|
|
126
171
|
if ::File.directory?(file)
|
127
172
|
tar.mkdir(relative_file, mode)
|
128
173
|
else
|
129
|
-
tar.
|
174
|
+
tar.add_longname_file relative_file, mode do |tf|
|
130
175
|
::File.open(file, 'rb') do |f|
|
131
|
-
while f_content = f.read(
|
176
|
+
while f_content = f.read(1048576)
|
132
177
|
tf.write f_content
|
133
178
|
end
|
134
179
|
end
|
@@ -140,7 +185,7 @@ module SimpleBackup
|
|
140
185
|
gz = ::File.open(@backup_file, 'w')
|
141
186
|
Zlib::GzipWriter.open(gz) do |zip|
|
142
187
|
tempfile.seek(0)
|
143
|
-
while f_content = tempfile.read(
|
188
|
+
while f_content = tempfile.read(1048576)
|
144
189
|
zip.write f_content
|
145
190
|
end
|
146
191
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_backup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomasz Maczukin
|
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
121
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.
|
122
|
+
rubygems_version: 2.2.2
|
123
123
|
signing_key:
|
124
124
|
specification_version: 4
|
125
125
|
summary: Backup tool with simple DSL for configuration
|