Sfoglia il codice sorgente

borg mount: support --consider-part-files correctly, fixes #3347

(cherry picked from commit caece370b8931751195f439f5a5c08baa97d65f9)
Thomas Waldmann 7 anni fa
parent
commit
47d16e0f62
1 ha cambiato i file con 4 aggiunte e 3 eliminazioni
  1. 4 3
      src/borg/fuse.py

+ 4 - 3
src/borg/fuse.py

@@ -119,7 +119,7 @@ class ItemCache:
         else:
             raise ValueError('Invalid entry type in self.meta')
 
-    def iter_archive_items(self, archive_item_ids, filter=None):
+    def iter_archive_items(self, archive_item_ids, filter=None, consider_part_files=False):
         unpacker = msgpack.Unpacker()
 
         # Current offset in the metadata stream, which consists of all metadata chunks glued together
@@ -163,7 +163,7 @@ class ItemCache:
                     break
 
                 item = Item(internal_dict=item)
-                if filter and not filter(item):
+                if filter and not filter(item) or not consider_part_files and 'part' in item:
                     msgpacked_bytes = b''
                     continue
 
@@ -342,7 +342,8 @@ class FuseOperations(llfuse.Operations):
                 hardlink_masters[item.get('path')] = (item.get('chunks'), None)
 
         filter = Archiver.build_filter(matcher, peek_and_store_hardlink_masters, strip_components)
-        for item_inode, item in self.cache.iter_archive_items(archive.metadata.items, filter=filter):
+        for item_inode, item in self.cache.iter_archive_items(archive.metadata.items, filter=filter,
+                                                              consider_part_files=self.args.consider_part_files):
             if strip_components:
                 item.path = os.sep.join(item.path.split(os.sep)[strip_components:])
             path = os.fsencode(item.path)