From 9f9ae8742b20f769e2326d70b61111b2674503bb Mon Sep 17 00:00:00 2001 From: Daniel Garcia Moreno Date: Mon, 30 Jun 2014 09:31:03 +0200 Subject: [PATCH] Fixed "random" file corruption in multivol restore Files splitted between two volumes were not valid in the restored backup. The first part was okay but the second part was garbage. The problem was that we don't set correctly the volume number so the second part always was from the first tar file. We were checking member variable, but this variable changes before, so I've added a new bool variable "ismember" that don't change with member. --- deltatar/deltatar.py | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/deltatar/deltatar.py b/deltatar/deltatar.py index 2b37e90..6f4984c 100644 --- a/deltatar/deltatar.py +++ b/deltatar/deltatar.py @@ -1619,6 +1619,7 @@ class RestoreHelper(object): ''' op_type = file_data.get('type', -1) member = file_data.get('member', None) + ismember = bool(member) # when member is set, then we can assume everything is right and we # just have to restore the path @@ -1681,7 +1682,7 @@ class RestoreHelper(object): if os.path.exists(member.path): return - if not member: + if not ismember: # set current volume number in tarobj, otherwise the extraction of the # file might fail when trying to extract a multivolume member index_data['tarobj'].volume_number = index_data['curr_vol_no'] @@ -1704,4 +1705,4 @@ class RestoreHelper(object): class DirItem(object): def __init__(self, **kwargs): for k, v in kwargs.items(): - setattr(self, k, v) \ No newline at end of file + setattr(self, k, v) -- 1.7.1