From 305447c1a01d89f0fc33485c17fc81381d79c7d7 Mon Sep 17 00:00:00 2001 From: r0n1n7an Date: Tue, 5 Aug 2025 09:19:21 +0800 Subject: [PATCH] optimize logic of adding/removing local file suffix --- ftpsClient.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ftpsClient.go b/ftpsClient.go index ce137e5..d96ffdb 100644 --- a/ftpsClient.go +++ b/ftpsClient.go @@ -8,7 +8,6 @@ import ( "log" "os" "path/filepath" - "strings" "time" "gopkg.in/dutchcoders/goftp.v1" @@ -34,12 +33,12 @@ func init() { flag.StringVar(&port, "o", "3031", "FTPS Server Port") flag.StringVar(&user, "u", "idte", "Username") flag.StringVar(&pswd, "p", "wistronTE2022", "Password") - flag.StringVar(&loc, "L", "./", "Local Path") - flag.StringVar(&rmt, "R", "/", "Remote Path") + flag.StringVar(&loc, "L", "./", "Local Path (File)") + flag.StringVar(&rmt, "R", "/", "Remote Path (Dir)") flag.StringVar(&act, "A", "list", "Action: list,upld,dnld") - flag.StringVar(&suffix, "X", ".PENDING", "Temporary filename suffix while uploading") - flag.IntVar(&intrv, "I", 10, "Retry Interval (Seconds)") - flag.IntVar(&retry, "T", 5, "Retry Times") + flag.StringVar(&suffix, "x", ".PENDING", "Temporary Suffix for Uploading") + flag.IntVar(&intrv, "n", 10, "Retry Interval (Seconds)") + flag.IntVar(&retry, "t", 5, "Retry Times") flag.Parse() } @@ -158,9 +157,15 @@ func _Upload(local, remote string) { if suffix != "" { err = os.Rename(local, local+suffix) 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 } + 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++ { if i > 0 { @@ -183,14 +188,9 @@ func _Upload(local, remote string) { return } if suffix != "" { - err = ftp.Rename(remote+"/"+baseLocal+suffix, remote+"/"+baseLocal) + err = ftp.Rename(remote+baseLocal+suffix, remote+baseLocal) if err != nil { - 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())) + log.Printf("[ERR] Rename Remote File: %s --> %s; %s\r\n", remote+baseLocal+suffix, remote+baseLocal, err.Error()) return } }