diff --git a/src/borg/patterns.py b/src/borg/patterns.py index a2b7a26bf..927fed57e 100644 --- a/src/borg/patterns.py +++ b/src/borg/patterns.py @@ -215,7 +215,7 @@ class PathFullPattern(PatternBase): PREFIX = "pf" def _prepare(self, pattern): - self.pattern = os.path.normpath(pattern) + self.pattern = os.path.normpath(pattern).lstrip(os.path.sep) # sep at beginning is removed def _match(self, path): return path == self.pattern @@ -235,7 +235,9 @@ class PathPrefixPattern(PatternBase): PREFIX = "pp" def _prepare(self, pattern): - self.pattern = os.path.normpath(pattern).rstrip(os.path.sep) + os.path.sep + sep = os.path.sep + + self.pattern = (os.path.normpath(pattern).rstrip(sep) + sep).lstrip(sep) # sep at beginning is removed def _match(self, path): return (path + os.path.sep).startswith(self.pattern) @@ -253,7 +255,7 @@ class FnmatchPattern(PatternBase): else: pattern = os.path.normpath(pattern) + os.path.sep + '*' - self.pattern = pattern + self.pattern = pattern.lstrip(os.path.sep) # sep at beginning is removed # fnmatch and re.match both cache compiled regular expressions. # Nevertheless, this is about 10 times faster. @@ -277,7 +279,7 @@ class ShellPattern(PatternBase): else: pattern = os.path.normpath(pattern) + sep + "**" + sep + "*" - self.pattern = pattern + self.pattern = pattern.lstrip(sep) # sep at beginning is removed self.regex = re.compile(shellpattern.translate(self.pattern)) def _match(self, path): @@ -290,7 +292,7 @@ class RegexPattern(PatternBase): PREFIX = "re" def _prepare(self, pattern): - self.pattern = pattern + self.pattern = pattern # sep at beginning is NOT removed self.regex = re.compile(pattern) def _match(self, path):