Ver Fonte

Merge pull request #7412 from ThomasWaldmann/hardlink-master-bug-1.2

set .hardlink_master for hardlinkable items, fixes #7175
TW há 2 anos atrás
pai
commit
134583a7bf
1 ficheiros alterados com 5 adições e 0 exclusões
  1. 5 0
      src/borg/archive.py

+ 5 - 0
src/borg/archive.py

@@ -1350,6 +1350,8 @@ class FilesystemObjectProcessors:
             with OsOpen(path=path, parent_fd=parent_fd, name=name, flags=flags_normal, noatime=True) as fd:
             with OsOpen(path=path, parent_fd=parent_fd, name=name, flags=flags_normal, noatime=True) as fd:
                 with backup_io('fstat'):
                 with backup_io('fstat'):
                     st = stat_update_check(st, os.fstat(fd))
                     st = stat_update_check(st, os.fstat(fd))
+                if not hardlinked or hardlink_master:
+                    item.hardlink_master = hardlinked
                 item.update(self.metadata_collector.stat_attrs(st, path, fd=fd))
                 item.update(self.metadata_collector.stat_attrs(st, path, fd=fd))
                 return status
                 return status
 
 
@@ -1359,6 +1361,8 @@ class FilesystemObjectProcessors:
             with backup_io('stat'):
             with backup_io('stat'):
                 st = stat_update_check(st, os_stat(path=path, parent_fd=parent_fd, name=name, follow_symlinks=False))
                 st = stat_update_check(st, os_stat(path=path, parent_fd=parent_fd, name=name, follow_symlinks=False))
             item.rdev = st.st_rdev
             item.rdev = st.st_rdev
+            if not hardlinked or hardlink_master:
+                item.hardlink_master = hardlinked
             item.update(self.metadata_collector.stat_attrs(st, path))
             item.update(self.metadata_collector.stat_attrs(st, path))
             return status
             return status
 
 
@@ -1395,6 +1399,7 @@ class FilesystemObjectProcessors:
         self.process_file_chunks(item, cache, self.stats, self.show_progress, backup_io_iter(self.chunker.chunkify(fd)))
         self.process_file_chunks(item, cache, self.stats, self.show_progress, backup_io_iter(self.chunker.chunkify(fd)))
         item.get_size(memorize=True)
         item.get_size(memorize=True)
         self.stats.nfiles += 1
         self.stats.nfiles += 1
+        item.hardlink_master = False
         self.add_item(item, stats=self.stats)
         self.add_item(item, stats=self.stats)
         return status
         return status