cURL SFTP 업로드 속도는 명령 줄 SFTP에 비해 50 % 만


1

cURL을 사용하여 일부 파일을 SFTP 서버에 업로드해야합니다. 나중에 cURL_multi 등을 사용하여 파일을 동시에 전송해야하므로 cURL을 사용해야합니다. 키를 사용하여 최대 10 개의 동시 전송을 지원합니다.

내가 가진 문제는 cURL이 고통스럽게 느리게 실행된다는 것입니다. Ubuntu 12.04에서 표준 SFTP 클라이언트를 사용하여 업로드하면 약 70Kb / s (이것은 서버 속도에 불과합니다)이지만 cURL을 사용할 때 SFTP 속도의 절반 인 35Kb / s입니다.

누구나 cURL을 다시 컴파일하지 않고도 cURL 속도를 높일 수있는 방법을 알고 있지만 필요한 경우 사용합니다.

SFTP 명령은 다음과 같습니다.

/usr/bin/sftp -oProtocol=2 -oIdentityFile=/path/to/key.pri -oPort=5000 -oStrictHostKeyChecking=no username@thedomain.com

put filename.wav연결되면 바로 ...

그리고 cURL :

curl -v -u username: --key /path/to/key.pri --pubkey /path/to/key.pub -T /path/to/filename.wav sftp://thedomain.com:5000/folder/TEST/filename.wav --insecure

이것은 cURL 버전 정보입니다.

curl 7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 libssh2/1.2.8 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp Features: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

확실히 모두에게 느릴 수는 없습니까?

답변:


1

이것은 불행히도 curl에서 알려진 문제입니다. 더 큰 것으로 재 컴파일하면 완화 될 수 있습니다 CURL_MAX_WRITE_SIZE. 메일 링리스트에서이 항목을 참조하십시오 .

결국 멀티 업로드를 시도하고 있기 때문에 여전히 SFTP over curl로 나가는 파이프를 채우는 데 성공할 수 있습니다.


우리가 가진 문제는 PHP와 함께 사용하는 것이 복잡하다는 것입니다 ... cURL을 다시 컴파일해야한다면 PHP도 다시 컴파일해야한다고 생각합니다. 라이브 프로덕션 사이트!
BT643

파일을 보내야하는 방식 은 "멀티"특성을 완전히 활용 하지 못합니다 . 한 번에 파일 블록을 보내야하고 파일이 끝났을 때만 더 보낼 수 있습니다. 한 번에 하나씩 만 보내고 다른 때에는 한 번에 10 개만 보낼 수 있습니다. (다른 방법을 사용해야한다고 생각합니다. (
BT643
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.