File tree 1 file changed +16
-5
lines changed
1 file changed +16
-5
lines changed Original file line number Diff line number Diff line change @@ -561,18 +561,29 @@ func (c *cmdFilePull) Run(cmd *cobra.Command, args []string) error {
561
561
return err
562
562
}
563
563
564
+ sftpClients := map [string ]* sftp.Client {}
565
+
566
+ defer func () {
567
+ for _ , sftpClient := range sftpClients {
568
+ _ = sftpClient .Close ()
569
+ }
570
+ }()
571
+
564
572
for _ , resource := range resources {
565
573
pathSpec := strings .SplitN (resource .name , "/" , 2 )
566
574
if len (pathSpec ) != 2 {
567
575
return fmt .Errorf (i18n .G ("Invalid source %s" ), resource .name )
568
576
}
569
577
570
- sftpConn , err := resource .server .GetInstanceFileSFTP (pathSpec [0 ])
571
- if err != nil {
572
- return err
573
- }
578
+ sftpConn , ok := sftpClients [pathSpec [0 ]]
579
+ if ! ok {
580
+ sftpConn , err = resource .server .GetInstanceFileSFTP (pathSpec [0 ])
581
+ if err != nil {
582
+ return err
583
+ }
574
584
575
- defer func () { _ = sftpConn .Close () }()
585
+ sftpClients [pathSpec [0 ]] = sftpConn
586
+ }
576
587
577
588
src , err := sftpConn .Open (pathSpec [1 ])
578
589
if err != nil {
You can’t perform that action at this time.
0 commit comments