diff --git a/borg/archive.py b/borg/archive.py index 638c54b59..b914a836c 100644 --- a/borg/archive.py +++ b/borg/archive.py @@ -633,6 +633,9 @@ Number of files: {0.stats.nfiles}'''.format( return 'b' # block device def process_symlink(self, path, st): + # note: we can not support hardlinked symlinks, + # due to the dual-use of item[b'source'], see issue #2343: + # hardlinked symlinks will be archived [and extracted] as non-hardlinked symlinks. with backup_io(): source = os.readlink(path) item = {b'path': make_path_safe(path), b'source': source} diff --git a/docs/faq.rst b/docs/faq.rst index 3f00e4edb..2f4a9e119 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -94,6 +94,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. * filesystem specific attributes, like ext4 immutable bit, see :issue:`618`. + * 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? ----------------------------------