optimize logic of adding/removing local file suffix

This commit is contained in:
r0n1n7an 2025-08-05 09:19:21 +08:00
parent a16eb3dc04
commit 305447c1a0

View File

@ -8,7 +8,6 @@ import (
"log" "log"
"os" "os"
"path/filepath" "path/filepath"
"strings"
"time" "time"
"gopkg.in/dutchcoders/goftp.v1" "gopkg.in/dutchcoders/goftp.v1"
@ -34,12 +33,12 @@ func init() {
flag.StringVar(&port, "o", "3031", "FTPS Server Port") flag.StringVar(&port, "o", "3031", "FTPS Server Port")
flag.StringVar(&user, "u", "idte", "Username") flag.StringVar(&user, "u", "idte", "Username")
flag.StringVar(&pswd, "p", "wistronTE2022", "Password") flag.StringVar(&pswd, "p", "wistronTE2022", "Password")
flag.StringVar(&loc, "L", "./", "Local Path") flag.StringVar(&loc, "L", "./", "Local Path (File)")
flag.StringVar(&rmt, "R", "/", "Remote Path") flag.StringVar(&rmt, "R", "/", "Remote Path (Dir)")
flag.StringVar(&act, "A", "list", "Action: list,upld,dnld") flag.StringVar(&act, "A", "list", "Action: list,upld,dnld")
flag.StringVar(&suffix, "X", ".PENDING", "Temporary filename suffix while uploading") flag.StringVar(&suffix, "x", ".PENDING", "Temporary Suffix for Uploading")
flag.IntVar(&intrv, "I", 10, "Retry Interval (Seconds)") flag.IntVar(&intrv, "n", 10, "Retry Interval (Seconds)")
flag.IntVar(&retry, "T", 5, "Retry Times") flag.IntVar(&retry, "t", 5, "Retry Times")
flag.Parse() flag.Parse()
} }
@ -158,9 +157,15 @@ func _Upload(local, remote string) {
if suffix != "" { if suffix != "" {
err = os.Rename(local, local+suffix) err = os.Rename(local, local+suffix)
if err != nil { if err != nil {
log.Printf("[ERR] Rename Local File (Add Suffix): %s\r\n", strings.ToTitle(err.Error())) log.Printf("[ERR] Rename Local File (Add Suffix): %s\r\n", err.Error())
return return
} }
defer func() {
err := os.Rename(local+suffix, local)
if err != nil {
log.Printf("[ERR] Rename Local File (Remove Suffix): %s\r\n", err.Error())
}
}()
} }
for i := 0; i <= retry; i++ { for i := 0; i <= retry; i++ {
if i > 0 { if i > 0 {
@ -183,14 +188,9 @@ func _Upload(local, remote string) {
return return
} }
if suffix != "" { if suffix != "" {
err = ftp.Rename(remote+"/"+baseLocal+suffix, remote+"/"+baseLocal) err = ftp.Rename(remote+baseLocal+suffix, remote+baseLocal)
if err != nil { if err != nil {
log.Printf("[ERR] Rename Remote File: %s --> %s; %s\r\n", remote+"/"+baseLocal+suffix, remote+"/"+baseLocal, err.Error()) log.Printf("[ERR] Rename Remote File: %s --> %s; %s\r\n", remote+baseLocal+suffix, remote+baseLocal, err.Error())
//return
}
err = os.Rename(local+suffix, local)
if err != nil {
log.Printf("[ERR] Rename Local File (Remove Suffix): %s\r\n", strings.ToTitle(err.Error()))
return return
} }
} }