sync命令配合--delete同步到本地时,目标地址无法使用绝对路径
Closed this issue · 1 comments
sysuyc commented
问题描述:
sync命令搭配--delete --backup-dir参数,从OSS同步数据到本地,当指定了完整路径时,会报错。
错误信息形式:
Error: rename C:\ossutil64\C:\ossutil64\test\helloworld.txt ossbackup/test\helloworld.txt: The filename, directory name, or volume label syntax is incorrect.
复现方式,执行如下命令:
ossutil sync -u --delete --backup-dir=backup oss://test-bucket/srcFolder D:\destFolder
第一次成功同步。当删除bucket中数据之后,会触发备份的逻辑,尝试将文件移动至备份目录下。
在拼接文件源地址的时候,调用了GetAbsPath函数,计算方式是 工作目录 + 目标目录,这导致了只能操作相对路径。
Lines 773 to 793 in 5a1b188
Line 644 in 5a1b188
Line 662 in 5a1b188
修复建议:
GetAbsPath函数中,判断目标地址是否为相对路径,还是绝对路径(比如/
开头,或者驱动器C:\
开头)。
Go用得不熟,只能读代码还没法提PR,希望能尽快修复这个bug
kkuai commented
thank you very much,I will fix it on version v1.7.6