fix: softlink exists

This commit is contained in:
sohunjug 2024-03-01 22:14:07 +08:00 committed by GitHub
parent 8e0df90177
commit db28986d22
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -319,7 +319,7 @@ class FileTransferModule(_ModuleBase):
:param transfer_type: RmtMode转移方式 :param transfer_type: RmtMode转移方式
:param over_flag: 是否覆盖为True时会先删除再转移 :param over_flag: 是否覆盖为True时会先删除再转移
""" """
if new_file.exists(): if new_file.exists() or new_file.is_symlink():
if not over_flag: if not over_flag:
logger.warn(f"文件已存在:{new_file}") logger.warn(f"文件已存在:{new_file}")
return 0 return 0
@ -486,35 +486,41 @@ class FileTransferModule(_ModuleBase):
# 判断是否要覆盖 # 判断是否要覆盖
overflag = False overflag = False
if new_file.exists(): target_file = new_file
# 目标文件已存在 if new_file.exists() or new_file.is_symlink():
logger.info(f"目标文件已存在,转移覆盖模式:{settings.OVERWRITE_MODE}") if new_file.is_symlink():
match settings.OVERWRITE_MODE: target_file = new_file.readlink()
case 'always': if not target_file.exists():
# 总是覆盖同名文件
overflag = True overflag = True
case 'size': if not overflag:
# 存在时大覆盖小 # 目标文件已存在
if new_file.stat().st_size < in_path.stat().st_size: logger.info(f"目标文件已存在,转移覆盖模式:{settings.OVERWRITE_MODE}")
logger.info(f"目标文件文件大小更小,将覆盖:{new_file}") match settings.OVERWRITE_MODE:
case 'always':
# 总是覆盖同名文件
overflag = True overflag = True
else: case 'size':
# 存在时大覆盖小
if target_file.stat().st_size < in_path.stat().st_size:
logger.info(f"目标文件文件大小更小,将覆盖:{new_file}")
overflag = True
else:
return TransferInfo(success=False,
message=f"媒体库中已存在,且质量更好",
path=in_path,
target_path=new_file,
fail_list=[str(in_path)])
case 'never':
# 存在不覆盖
return TransferInfo(success=False, return TransferInfo(success=False,
message=f"媒体库中已存在,且质量更好", message=f"媒体库中已存在,当前设置为不覆盖",
path=in_path, path=in_path,
target_path=new_file, target_path=new_file,
fail_list=[str(in_path)]) fail_list=[str(in_path)])
case 'never': case 'latest':
# 存在不覆盖 # 仅保留最新版本
return TransferInfo(success=False, logger.info(f"仅保留最新版本,将覆盖:{new_file}")
message=f"媒体库中已存在,当前设置为不覆盖", overflag = True
path=in_path,
target_path=new_file,
fail_list=[str(in_path)])
case 'latest':
# 仅保留最新版本
logger.info(f"仅保留最新版本,将覆盖:{new_file}")
overflag = True
else: else:
if settings.OVERWRITE_MODE == 'latest': if settings.OVERWRITE_MODE == 'latest':
# 文件不存在,但仅保留最新版本 # 文件不存在,但仅保留最新版本