support temporary filename suffix while uploading
This commit is contained in:
parent
e299ca4c24
commit
e2b96364e8
@ -21,6 +21,7 @@ var (
|
|||||||
loc string = ""
|
loc string = ""
|
||||||
rmt string = ""
|
rmt string = ""
|
||||||
act string = ""
|
act string = ""
|
||||||
|
suffix string = ""
|
||||||
retry int = 0
|
retry int = 0
|
||||||
intrv int = 0
|
intrv int = 0
|
||||||
)
|
)
|
||||||
@ -28,13 +29,14 @@ var ftp *goftp.FTP
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
//flag.StringVar(&host, "h", "203.93.100.58", "FTPS Server Address")
|
//flag.StringVar(&host, "h", "203.93.100.58", "FTPS Server Address")
|
||||||
flag.StringVar(&host, "h", "10.60.254.52", "FTPS Server Address")
|
flag.StringVar(&host, "s", "10.60.254.52", "FTPS Server Address")
|
||||||
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")
|
||||||
flag.StringVar(&rmt, "R", "/", "Remote Path")
|
flag.StringVar(&rmt, "R", "/", "Remote Path")
|
||||||
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.IntVar(&intrv, "I", 10, "Retry Interval (Seconds)")
|
flag.IntVar(&intrv, "I", 10, "Retry Interval (Seconds)")
|
||||||
flag.IntVar(&retry, "T", 5, "Retry Times")
|
flag.IntVar(&retry, "T", 5, "Retry Times")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
@ -118,14 +120,14 @@ func _List(path string) {
|
|||||||
func _Download(local, remote string) {
|
func _Download(local, remote string) {
|
||||||
log.Printf("[MSG] Downloading: %s\r\n", remote)
|
log.Printf("[MSG] Downloading: %s\r\n", remote)
|
||||||
var err error
|
var err error
|
||||||
base := filepath.Base(remote)
|
baseRemote := filepath.Base(remote)
|
||||||
for i := 0; i <= retry; i++ {
|
for i := 0; i <= retry; i++ {
|
||||||
if i > 0 {
|
if i > 0 {
|
||||||
time.Sleep(time.Second * time.Duration(intrv))
|
time.Sleep(time.Second * time.Duration(intrv))
|
||||||
log.Printf("[###] Retrying Download %d/%d: %s\r\n", i, retry, remote)
|
log.Printf("[###] Retrying Download %d/%d: %s\r\n", i, retry, remote)
|
||||||
}
|
}
|
||||||
_, err = ftp.Retr(remote, func(rdr io.Reader) error {
|
_, err = ftp.Retr(remote, func(rdr io.Reader) error {
|
||||||
wtr, oserr := os.Create(local + base)
|
wtr, oserr := os.Create(local + baseRemote)
|
||||||
if oserr != nil {
|
if oserr != nil {
|
||||||
return oserr
|
return oserr
|
||||||
}
|
}
|
||||||
@ -150,26 +152,46 @@ func _Download(local, remote string) {
|
|||||||
|
|
||||||
func _Upload(local, remote string) {
|
func _Upload(local, remote string) {
|
||||||
log.Printf("[MSG] Uploading: %s\r\n", local)
|
log.Printf("[MSG] Uploading: %s\r\n", local)
|
||||||
|
baseLocal := filepath.Base(local)
|
||||||
var err error
|
var err error
|
||||||
|
if suffix != "" {
|
||||||
|
err = os.Rename(local, local+suffix)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("[ERR] Rename Local File: %s -> %s; %s\r\n", local, local+suffix, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
for i := 0; i <= retry; i++ {
|
for i := 0; i <= retry; i++ {
|
||||||
if i > 0 {
|
if i > 0 {
|
||||||
time.Sleep(time.Second * time.Duration(intrv))
|
time.Sleep(time.Second * time.Duration(intrv))
|
||||||
log.Printf("[###] Retrying Upload %d/%d: %s\r\n", i, retry, local)
|
log.Printf("[###] Retrying Upload %d/%d: %s\r\n", i, retry, local+suffix)
|
||||||
}
|
}
|
||||||
err = ftp.Cwd(remote)
|
err = ftp.Cwd(remote)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
err = ftp.Upload(local)
|
err = ftp.Upload(local + suffix)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("[***] %s; %s\r\n", remote, local)
|
log.Printf("[***] %s; %s\r\n", remote, local+suffix)
|
||||||
log.Printf("[ERR] Upload NG: %s; %s", local, err.Error())
|
log.Printf("[ERR] Upload NG: %s; %s", local+suffix, err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if suffix != "" {
|
||||||
|
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: %s -> %s; %s\r\n", local+suffix, local, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
log.Printf("[MSG] Upload OK: %s\r\n", local)
|
log.Printf("[MSG] Upload OK: %s\r\n", local)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user