Назад | Перейти на главную страницу

ограничение размера файла sftp

Кажется, существует ограничение на размер файла для передачи sftp из командной строки, если я пытаюсь загрузить файл размером 20 МБ, он останавливается на 20%, когда передаваемые данные превышают 4 МБ:

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

Есть ли где-то предел и как его изменить? Я использую скриптовое соединение sftp с ожиданием. Скачивание файла через Файловый менеджер Nautilus или sftp из консоли без сценария оболочки и ожидать программа обе вроде работают. Сценарий выглядит следующим образом:

#!/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

По умолчанию ограничений нет (насколько мне известно).

Я предполагаю, что вы получаете потерю пакетов и тайм-аут. Попробуйте добавить -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

Кажется, что добавление тайм-аута решает проблему. По умолчанию время ожидания ожидания равно 10 секунд, что означает, что при скорости 400 КБ / с тайм-аут срабатывает, если достигается 4000 КБ = 4 МБ

set timeout 300