Fixed "random" file corruption in multivol restore
authorDaniel Garcia Moreno <danigm@wadobo.com>
Mon, 30 Jun 2014 07:31:03 +0000 (09:31 +0200)
committerDaniel Garcia Moreno <danigm@wadobo.com>
Mon, 30 Jun 2014 07:31:03 +0000 (09:31 +0200)
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

index 2b37e90..6f4984c 100644 (file)
@@ -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)