Parece que adicionar um tempo limite resolve o problema. O tempo limite padrão esperado é de 10 segundos , o que significa uma taxa de 400 KB / s, o tempo limite é acionado se 4000 KB = 4 MB for atingido
set timeout 300
Parece haver um limite de tamanho de arquivo para a transferência sftp na linha de comando; se eu tentar baixar um arquivo de 20 MB, ele será interrompido em 20% quando os dados transferidos forem maiores que 4 MB:
/myfile.xml 22% 4480KB 410.4KB/s 00:38 ETA
Existe algum limite em algum lugar e como você pode mudá-lo? Eu uso uma conexão sftp com script . Baixando o arquivo via gerenciador de arquivos Nautilus ou sftp do console sem script de shell e espere
#!/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
Parece que adicionar um tempo limite resolve o problema. O tempo limite padrão esperado é de 10 segundos , o que significa uma taxa de 400 KB / s, o tempo limite é acionado se 4000 KB = 4 MB for atingido
set timeout 300
Não há limite por padrão (até onde eu saiba).
Eu acho que você está recebendo perda de pacotes e tempo limite. Eu tentaria adicionar -P.
-P 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.
Fonte: link
Eu provavelmente copiaria com rsync, rsync -avrz --ignore-existing /folder/folder/folder [email protected]:/folder/folder/folder