Browse Source

portable mode: add SFTP buffer size

Nicola Murino 4 years ago
parent
commit
ed26d68948
3 changed files with 21 additions and 0 deletions
  1. 3 0
      .github/workflows/development.yml
  2. 10 0
      cmd/portable.go
  3. 8 0
      docs/portable-mode.md

+ 3 - 0
.github/workflows/development.yml

@@ -74,6 +74,7 @@ jobs:
         run: |
           mkdir -p output/{init,bash_completion,zsh_completion}
           cp sftpgo output/
+          chmod 755 output/sftpgo
           cp sftpgo.json output/
           cp -r templates output/
           cp -r static output/
@@ -222,6 +223,7 @@ jobs:
           ./sftpgo gen man -d output/man/man1
           gzip output/man/man1/*
           cp sftpgo output/
+          chmod 755 output/sftpgo
 
       - uses: uraimo/[email protected]
         if: ${{ matrix.arch != 'amd64' }}
@@ -259,6 +261,7 @@ jobs:
             ./sftpgo gen man -d output/man/man1
             gzip output/man/man1/*
             cp sftpgo output/
+            chmod 755 output/sftpgo
 
       - name: Upload build artifact
         uses: actions/upload-artifact@v2

+ 10 - 0
cmd/portable.go

@@ -73,6 +73,7 @@ var (
 	portableSFTPFingerprints           []string
 	portableSFTPPrefix                 string
 	portableSFTPDisableConcurrentReads bool
+	portableSFTPDBufferSize            int64
 	portableCmd                        = &cobra.Command{
 		Use:   "portable",
 		Short: "Serve a single directory",
@@ -192,6 +193,7 @@ Please take a look at the usage below to customize the serving parameters`,
 							Fingerprints:            portableSFTPFingerprints,
 							Prefix:                  portableSFTPPrefix,
 							DisableCouncurrentReads: portableSFTPDisableConcurrentReads,
+							BufferSize:              portableSFTPDBufferSize,
 						},
 					},
 					Filters: dataprovider.UserFilters{
@@ -322,6 +324,14 @@ remote SFTP server`)
 	portableCmd.Flags().BoolVar(&portableSFTPDisableConcurrentReads, "sftp-disable-concurrent-reads", false, `Concurrent reads are safe to use and
 disabling them will degrade performance.
 Disable for read once servers`)
+	portableCmd.Flags().Int64Var(&portableSFTPDBufferSize, "sftp-buffer-size", 0, `The size of the buffer (in MB) to use
+for transfers. By enabling buffering,
+the reads and writes, from/to the
+remote SFTP server, are split in
+multiple concurrent requests and this
+allows data to be transferred at a
+faster rate, over high latency networks,
+by overlapping round-trip times`)
 	rootCmd.AddCommand(portableCmd)
 }
 

+ 8 - 0
docs/portable-mode.md

@@ -91,6 +91,14 @@ Flags:
                                         parallel (default 2)
       --s3-upload-part-size int         The buffer size for multipart uploads
                                         (MB) (default 5)
+      --sftp-buffer-size int            The size of the buffer (in MB) to use
+                                        for transfers. By enabling buffering,
+                                        the reads and writes, from/to the
+                                        remote SFTP server, are split in
+                                        multiple concurrent requests and this
+                                        allows data to be transferred at a
+                                        faster rate, over high latency networks,
+                                        by overlapping round-trip times
       --sftp-disable-concurrent-reads   Concurrent reads are safe to use and
                                         disabling them will degrade performance.
                                         Disable for read once servers