From 62fbb04c9d6b687d2ffd9313f11bbb5904e63610 Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 16 Jun 2022 18:46:50 +0200 Subject: [PATCH] allow moving files between filesystems --- copyparty/up2k.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/copyparty/up2k.py b/copyparty/up2k.py index cb678486..3eac983d 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -1980,7 +1980,22 @@ class Up2k(object): else: self.log("not found in src db: [{}]".format(svp)) - bos.rename(sabs, dabs) + try: + atomic_move(sabs, dabs) + except OSError as ex: + if ex.errno != 18: + raise + + self.log("cross-device move:\n {}\n {}".format(sabs, dabs)) + b1, b2 = fsenc(sabs), fsenc(dabs) + try: + shutil.copy2(b1, b2) + except: + os.unlink(b2) + raise + + os.unlink(b1) + return "k" def _copy_tags(