diff --git a/docs/faq.rst b/docs/faq.rst index e23f45a30..6726e15bc 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -97,6 +97,9 @@ Which file types, attributes, etc. are *not* preserved? Archive extraction has optional support to extract all-zero chunks as holes in a sparse file. * Some filesystem specific attributes, like btrfs NOCOW, see :ref:`platforms`. + * For hardlinked symlinks, the hardlinking can not be archived (and thus, + the hardlinking will not be done at extraction time). The symlinks will + be archived and extracted as non-hardlinked symlinks, see :issue:`2379`. Are there other known limitations? ---------------------------------- diff --git a/src/borg/archive.py b/src/borg/archive.py index 64a5389d3..e04731e8f 100644 --- a/src/borg/archive.py +++ b/src/borg/archive.py @@ -1068,12 +1068,11 @@ class FilesystemObjectProcessors: def process_symlink(self, path, st): # note: using hardlinkable=False because we can not support hardlinked symlinks, # due to the dual-use of item.source, see issue #2343: + # hardlinked symlinks will be archived [and extracted] as non-hardlinked symlinks. with self.create_helper(path, st, 's', hardlinkable=False) as (item, status, hardlinked, hardlink_master): with backup_io('readlink'): source = os.readlink(path) item.source = source - if st.st_nlink > 1: - logger.warning('hardlinked symlinks will be archived as non-hardlinked symlinks!') item.update(self.metadata_collector.stat_attrs(st, path)) return status