backup_restore 0.0.1 → 0.0.2
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 +5 -5
- data/lib/backup_restore.rb +19 -5
- metadata +18 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 613b9269f9ac596c48d435acea0104daaeb5a77e7b3de9bd3a269a1e08c11a07
|
4
|
+
data.tar.gz: 7c3621da53ccff81bb257df6d5353e6f0900a658230b6edb134cca8cca9c46c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be1f6ff91000c35702118ee9092e71e5a902b6f1d713aef8a56cb007c20a79b2b21980ac99327784995fa6e1c03e435f8ac04ede663e8a5b4e8c62c42d7dc754
|
7
|
+
data.tar.gz: e6e306071341fa77f7c6e5b1378bc40759dae01d576bd0c73eaff0af08b9e83328eb930949655df37b59bd68d9454ef297f72aa48902cbc67f65ef80fe25ee99
|
data/lib/backup_restore.rb
CHANGED
@@ -57,7 +57,7 @@ class BackupRestore
|
|
57
57
|
def self.extract_tar_file(file, target_folder = nil)
|
58
58
|
command = "tar --extract --file=#{file}"
|
59
59
|
unless target_folder.nil?
|
60
|
-
command += " --preserve-permissions -C #{target_folder}"
|
60
|
+
command += " --preserve-permissions -C '#{target_folder}'"
|
61
61
|
# -C
|
62
62
|
# tar will change its current directory to dir before performing any operations
|
63
63
|
# https://www.gnu.org/software/tar/manual/html_node/Option-Summary.html
|
@@ -92,7 +92,7 @@ class BackupRestore
|
|
92
92
|
storage = get_storage_folder(archive_storage_root, archive_name)
|
93
93
|
output_archive = archive_name + '.tar'
|
94
94
|
change_directory(storage)
|
95
|
-
command = "openssl aes-256-cbc -d -in #{archive_name}.tar.enc -k #{password} -out #{output_archive}"
|
95
|
+
command = "openssl aes-256-cbc -md md5 -d -in '#{archive_name}.tar.enc' -k '#{password}' -out '#{output_archive}'"
|
96
96
|
execute_command(command)
|
97
97
|
end
|
98
98
|
|
@@ -126,7 +126,8 @@ class BackupRestore
|
|
126
126
|
def self.unsplit_archive(archive_storage_root, archive_name)
|
127
127
|
storage = get_storage_folder(archive_storage_root, archive_name)
|
128
128
|
change_directory(storage)
|
129
|
-
|
129
|
+
raise "archive name was assumed to not have spaces but it is #{archive_name}" if archive_name.include?(" ")
|
130
|
+
execute_command("cat #{archive_name}.tar.enc-* > '#{archive_name}.tar.enc'")
|
130
131
|
end
|
131
132
|
|
132
133
|
def self.validate_folder_parameters(archive_storage_root, unpack_root)
|
@@ -139,15 +140,28 @@ class BackupRestore
|
|
139
140
|
def self.process_given_archive(archive_storage_root, archive_name, unpack_root, password)
|
140
141
|
debug("processsing #{archive_name} in #{archive_storage_root} - extracting to #{unpack_root}", :high)
|
141
142
|
validate_folder_parameters(archive_storage_root, unpack_root)
|
143
|
+
# archive may be in form of
|
144
|
+
# (1) file(s) $NAME.tar.enc-aaa, $NAME.tar.enc-aab, $NAME.tar.enc-aac ...
|
145
|
+
# (2) single $NAME.tar.enc
|
142
146
|
if is_unsplitting_necessary(archive_storage_root, archive_name)
|
143
147
|
unsplit_archive(archive_storage_root, archive_name)
|
144
148
|
end
|
149
|
+
|
150
|
+
# now $NAME.tar.enc exists with the entire archive
|
145
151
|
uncrypt_archive(archive_storage_root, archive_name, password)
|
146
|
-
|
147
|
-
|
152
|
+
# now $NAME.tar exists with the entire archive unencrypted
|
153
|
+
|
154
|
+
# now $NAME.tar.enc can be now deleted if it was created
|
155
|
+
# it MUST NOT be deleted if archive was not split - in that case
|
156
|
+
# it is the original archive file!
|
157
|
+
# it is deleted at this step to reduce peak memory consumption on disk
|
158
|
+
# for unpacking large archives
|
148
159
|
if is_unsplitting_necessary(archive_storage_root, archive_name)
|
149
160
|
FileUtils.rm_rf(storage + archive_name + ".tar.enc")
|
150
161
|
end
|
162
|
+
|
163
|
+
extract_archive(archive_storage_root, archive_name, unpack_root)
|
164
|
+
storage = get_storage_folder(archive_storage_root, archive_name)
|
151
165
|
FileUtils.rm_rf(storage + archive_name + ".tar")
|
152
166
|
end
|
153
167
|
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backup_restore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mateusz Konieczny
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
11
|
+
date: 2019-10-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: matkoniecz-ruby-style
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
description: 'Script for unpacking backups produced by the backup gem. See https://github.com/backup/backup-features/issues/28
|
14
28
|
for discussion about this feature in backup gem itself. '
|
15
29
|
email: matkoniecz@gmail.com
|
@@ -37,8 +51,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
37
51
|
- !ruby/object:Gem::Version
|
38
52
|
version: '0'
|
39
53
|
requirements: []
|
40
|
-
|
41
|
-
rubygems_version: 2.5.1
|
54
|
+
rubygems_version: 3.0.4
|
42
55
|
signing_key:
|
43
56
|
specification_version: 4
|
44
57
|
summary: Script for unpacking backups produced by the backup gem.
|