Skip to content

Commit 367ea09

Browse files
author
cyk
committed
fix(FileTransferTask): skip copying if destination directory does not exist
1 parent 8742344 commit 367ea09

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

internal/fs/copy_move.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -191,18 +191,24 @@ func (t *FileTransferTask) RunWithNextTaskCallback(f func(nextTask *FileTransfer
191191

192192
existedObjs := make(map[string]bool)
193193
if t.TaskType == merge {
194-
dstObjs, err := op.List(t.Ctx(), t.DstStorage, dstActualPath, model.ListArgs{})
195-
if err != nil {
196-
return errors.WithMessagef(err, "failed list dst [%s] objs", dstActualPath)
197-
}
198-
for _, obj := range dstObjs {
199-
if err := t.Ctx().Err(); err != nil {
200-
return err
194+
// 检查目标目录是否存在
195+
_, err := op.Get(t.Ctx(), t.DstStorage, dstActualPath)
196+
if err == nil {
197+
// 目标目录存在,列出已有文件
198+
dstObjs, err := op.List(t.Ctx(), t.DstStorage, dstActualPath, model.ListArgs{})
199+
if err != nil {
200+
return errors.WithMessagef(err, "failed list dst [%s] objs", dstActualPath)
201201
}
202-
if !obj.IsDir() {
203-
existedObjs[obj.GetName()] = true
202+
for _, obj := range dstObjs {
203+
if err := t.Ctx().Err(); err != nil {
204+
return err
205+
}
206+
if !obj.IsDir() {
207+
existedObjs[obj.GetName()] = true
208+
}
204209
}
205210
}
211+
// 如果目标目录不存在(err != nil),existedObjs保持为空map,所有文件都会被复制
206212
}
207213

208214
for _, obj := range objs {

0 commit comments

Comments
 (0)