From accb26f2003e92f484ecaff6ab1ad5e977b8c576 Mon Sep 17 00:00:00 2001 From: Douglas Bagnall Date: Thu, 25 Nov 2021 09:26:54 +1300 Subject: [PATCH] possible fix for bug 14918 Signed-off-by: Douglas Bagnall --- python/samba/netcmd/domain_backup.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/python/samba/netcmd/domain_backup.py b/python/samba/netcmd/domain_backup.py index a629b31d70f..46c57e67aed 100644 --- a/python/samba/netcmd/domain_backup.py +++ b/python/samba/netcmd/domain_backup.py @@ -1085,6 +1085,7 @@ class cmd_domain_backup_offline(samba.netcmd.Command): # Recursively get all file paths in the backup directories all_files = [] + all_stats = set() for backup_dir in backup_dirs: for (working_dir, _, filenames) in os.walk(backup_dir): if working_dir.startswith(paths.sysvol): @@ -1102,7 +1103,13 @@ class cmd_domain_backup_offline(samba.netcmd.Command): # Ignore files that have already been added. This prevents # duplicates if one backup dir is a subdirectory of another, # or if backup dirs contain hardlinks. - if any(os.path.samefile(full_path, file) for file in all_files): + try: + s = os.stat(full_path) + except FileNotFoundError: + logger.info(f"{full_path} does not exist (dangling symlink?)") + continue + + if (s.st_ino, s.st_dev) in all_stats: continue # Assume existing backup files are from a previous backup. @@ -1116,6 +1123,7 @@ class cmd_domain_backup_offline(samba.netcmd.Command): continue all_files.append(full_path) + all_stats.add(((s.st_ino, s.st_dev)) # Backup secrets, sam.ldb and their downstream files self.backup_secrets(paths.private_dir, lp, logger) -- 2.25.1