diff --git a/src/borg/cache.py b/src/borg/cache.py index 6946742c7..6f6d87514 100644 --- a/src/borg/cache.py +++ b/src/borg/cache.py @@ -26,7 +26,7 @@ from .helpers import yes from .helpers import remove_surrogates from .helpers import ProgressIndicatorPercent, ProgressIndicatorMessage from .helpers import set_ec, EXIT_WARNING -from .helpers import truncate_and_unlink +from .helpers import safe_unlink from .helpers import msgpack from .item import ArchiveItem, ChunkListEntry from .crypto.key import PlaintextKey @@ -774,7 +774,7 @@ class LocalCache(CacheStatsMixin): filename=bin_to_hex(archive_id) + '.compact') as fd: chunk_idx.write(fd) except Exception: - truncate_and_unlink(fn_tmp) + safe_unlink(fn_tmp) else: os.rename(fn_tmp, fn) diff --git a/src/borg/helpers/fs.py b/src/borg/helpers/fs.py index db79db462..456392562 100644 --- a/src/borg/helpers/fs.py +++ b/src/borg/helpers/fs.py @@ -205,7 +205,7 @@ def secure_erase(path): os.unlink(path) -def truncate_and_unlink(path): +def safe_unlink(path): """ Safely unlink (delete) *path*. diff --git a/src/borg/platform/base.py b/src/borg/platform/base.py index c6351b24b..4b35868c6 100644 --- a/src/borg/platform/base.py +++ b/src/borg/platform/base.py @@ -3,7 +3,7 @@ import os import socket import uuid -from borg.helpers import truncate_and_unlink +from borg.helpers import safe_unlink from borg.platformflags import is_win32 """ @@ -212,7 +212,7 @@ class SaveFile: def __enter__(self): from .. import platform try: - truncate_and_unlink(self.tmppath) + safe_unlink(self.tmppath) except FileNotFoundError: pass self.fd = platform.SyncFile(self.tmppath, self.binary) @@ -222,7 +222,7 @@ class SaveFile: from .. import platform self.fd.close() if exc_type is not None: - truncate_and_unlink(self.tmppath) + safe_unlink(self.tmppath) return os.replace(self.tmppath, self.path) platform.sync_dir(os.path.dirname(self.path)) diff --git a/src/borg/remote.py b/src/borg/remote.py index 9017e2aa1..77d395f5e 100644 --- a/src/borg/remote.py +++ b/src/borg/remote.py @@ -25,7 +25,7 @@ from .helpers import get_limited_unpacker from .helpers import replace_placeholders from .helpers import sysinfo from .helpers import format_file_size -from .helpers import truncate_and_unlink +from .helpers import safe_unlink from .helpers import prepare_subprocess_env from .logger import create_logger, setup_logging from .helpers import msgpack @@ -1150,7 +1150,7 @@ class RepositoryCache(RepositoryNoCache): fd.write(packed) except OSError as os_error: try: - truncate_and_unlink(file) + safe_unlink(file) except FileNotFoundError: pass # open() could have failed as well if os_error.errno == errno.ENOSPC: diff --git a/src/borg/repository.py b/src/borg/repository.py index 9314222dd..f9a2c11f6 100644 --- a/src/borg/repository.py +++ b/src/borg/repository.py @@ -18,7 +18,7 @@ from .helpers import Error, ErrorWithTraceback, IntegrityError, format_file_size from .helpers import Location from .helpers import ProgressIndicatorPercent from .helpers import bin_to_hex -from .helpers import secure_erase, truncate_and_unlink +from .helpers import secure_erase, safe_unlink from .helpers import Manifest from .helpers import msgpack from .locking import Lock, LockError, LockErrorT @@ -1342,7 +1342,7 @@ class LoggedIO: if segment > transaction_id: if segment in self.fds: del self.fds[segment] - truncate_and_unlink(filename) + safe_unlink(filename) count += 1 else: break @@ -1450,7 +1450,7 @@ class LoggedIO: if segment in self.fds: del self.fds[segment] try: - truncate_and_unlink(self.segment_filename(segment)) + safe_unlink(self.segment_filename(segment)) except FileNotFoundError: pass