Sftp

sftp 文件大小限制

  • July 23, 2020

從命令行進行 sftp 傳輸似乎有文件大小限制,如果我嘗試下載 20 MB 的文件,當傳輸的數據大於 4 MB 時,它會在 20% 處停止:

/myfile.xml                             22% 4480KB 410.4KB/s   00:38 ETA       

某處有限制嗎?你怎麼能改變它?我使用帶有腳本的 sftp 連接 expect。通過Nautilus 文件管理器或 sftp 從控制台下載文件,無需 shell 腳本和期望程序似乎都可以工作。腳本如下:

#!/usr/bin/expect    
# usage: ./sftp_import.sh username host password filepath localpath

set username [lindex $argv 0]
set host [lindex $argv 1]
set password [lindex $argv 2]
set filepath [lindex $argv 3]
set localpath [lindex $argv 4]

spawn sftp $username@$host
expect "password:"
send "$password\r";
expect "sftp>"
send "get $filepath $localpath\r"
expect "sftp>"
send "bye \r";
exit 0

似乎添加超時可以解決問題。預設的期望超時為10 秒,這意味著以 400 KB/s 的速率,如果達到 4000 KB = 4 MB,則會觸發超時

set timeout 300

預設情況下沒有限制(據我所知)。

我猜你會丟包和超時。嘗試添加-D。

-D sftp_server_path Connect directly to a local sftp server (rather than via ssh(1)). This option may be useful in debugging the client and server.

來源:http ://www.cl.cam.ac.uk/cgi-bin/manpage?1+sftp

我可能會用 rsync 複製它,rsync -avrz --ignore-existing /folder/folder/folder username@whatever.com:/folder/folder/folder

引用自:https://serverfault.com/questions/483043