fixing bug related to deltatar multivol restore
authorEduardo Robles Elvira <edulix@wadobo.com>
Mon, 16 Sep 2013 16:26:50 +0000 (18:26 +0200)
committerEduardo Robles Elvira <edulix@wadobo.com>
Mon, 16 Sep 2013 16:26:50 +0000 (18:26 +0200)
Extracting a multivol diff backup sometimes failed because we did
not set the volume number, which is needed to be done when we are
extracting files one by one.

deltatar/deltatar.py

index ab0643e..213dfb1 100644 (file)
@@ -241,12 +241,9 @@ class DeltaTar(object):
         else:
             prefix = prefix + "-"
             postfix = "-%03d.tar%s" % (volume_number + 1, extension)
-            try:
-                for f in os.listdir(backup_path):
-                    if f.startswith(prefix) and f.endswith(postfix):
-                        return f
-            except Exception, e:
-                import ipdb; ipdb.set_trace()
+            for f in os.listdir(backup_path):
+                if f.startswith(prefix) and f.endswith(postfix):
+                    return f
             raise Exception("volume not found")
 
 
@@ -1386,5 +1383,9 @@ class RestoreHelper(object):
             if os.path.exists(member.path):
                 return
 
+        # 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']
+
         # finally, restore the file
         index_data['tarobj'].extract(member)