cURL을 사용하여 FTP에서 파일 다운로드


20

cURL 명령을 사용하여 FTP 서버에서 컴퓨터의 로컬 드라이브로 파일을 다운로드하려고합니다. 난 노력 했어

curl " ftp : // myftpsite "--user name : password -Q "CWD / users / myfolder /"-O "myfile.raw"

그러나 다음과 같은 오류가 반환됩니다.

curl : 원격 파일 이름 길이가 없습니다!
curl : 자세한 정보는 'curl --help'또는 'curl --manual'을 시도하십시오
curl : (6) 호스트를 확인할 수 없습니다 : myfile.raw; 요청 된 유형의 데이터 레코드가 없습니다.

다른 방법을 시도했지만 아무것도 작동하지 않는 것 같습니다.

또한 파일을 다운로드 할 폴더를 지정하는 방법을 잘 모르겠습니다. 어떻게해야합니까?

답변:


26

시험

curl -u user:password 'ftp://mysite/%2fusers/myfolder/myfile/raw' -o ~/Downloads/myfile.raw

FTP URL에서 경로는 시작 디렉토리 (보통 homedir)를 기준으로합니다. 절대 경로를 지정해야하며,를 사용 %2f하여 지정 하는 것을 의미 /합니다. ftp:URL 의 경로 는 슬래시로 구분 된 이름의 목록으로 취급되므로 각각 별도의 CWD명령 을 수행해야하기 때문에이 작업이 필요합니다 . 는 %2f디코딩 후에 분할. RFC 1738FTP URL을 참조하십시오 .

출력 위치는 경로를 지정하십시오 -o.


보안 제안 :

  • URL에 비밀번호를 입력하지 마십시오. 저장하는 ~/.netrc것도 특별히 안전하지는 않지만 적어도 숨겨져 있습니다 ps -ef.

  • 비밀번호는 일반 텍스트로 전송됩니다. 서버가 지원하는 경우 curl --ssl-reqd또는curl ftps://mysite/...

  • SFTP (SSH 파일 전송 프로토콜)를 사용하는 것이 훨씬 좋습니다.


잘 했어. /를 사용하고 있기 때문에 % 2f가 어떻게 사용되는지 완전히 이해하지 못하지만 작동하지만, 나는 불평하지 않을 것입니다. 도와 주셔서 감사합니다!
요시야

1
@Josiah : URL "path"는로 분할되고 /각 인수는 as , 라는 CWD명령으로 전송됩니다 . 이 주제에 대해서는 RFC 1738 을 참조하십시오 . %2fusers/myfolderCWD /usersCWD myfolder
user1686

2
curl -T /users/myfolder/myfile.raw -u username:password "ftp://myftpsite/path/myfile.raw"

나는 이것을 항상 사용합니다. 그것은 매력처럼 작동합니다.


1
이 답변을 가장 먼저 알게 되었습니까? -T 매개 변수는 "파일 업로드"를 의미하지만 OP는 "파일 다운로드"를 요청했습니다
Kar.ma

0

시험:

curl "ftp://user:password@myftpsite/users/myfolder/myfile.raw"

(원격 파일 이름이 'myfile.raw'인 경우)


시도하면 다음 오류가 발생합니다. "curl : (9) 서버에서 지정된 디렉토리로 변경을 거부했습니다". -Q "CWD"명령을 사용해야하는 이유가 여기에 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.