From c3073bacbb4850cf3a526ac08db42b05f3e33684 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Tue, 28 Jun 2016 18:49:51 +0200 Subject: [PATCH] in --read-special mode, follow symlinks, fixes #1215 --- borg/archiver.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/borg/archiver.py b/borg/archiver.py index 5cac525ce..f98db7fd0 100644 --- a/borg/archiver.py +++ b/borg/archiver.py @@ -256,7 +256,15 @@ class Archiver: return try: - st = os.lstat(path) + # usually, do not follow symlinks (if we have a symlink, we want to + # backup it as such). + # but if we are in --read-special mode, we later process as + # a regular file (we open and read the symlink target file's content). + # thus, in read_special mode, we also want to stat the symlink target + # file, for consistency. if we did not, we also have issues extracting + # this file, as it would be in the archive as a symlink, not as the + # target's file type (which could be e.g. a block device). + st = os.stat(path, follow_symlinks=read_special) except OSError as e: self.print_warning('%s: %s', path, e) return