Linux에서 FTP를 통해 폴더를 재귀 적으로 다운로드하는 방법 [닫기]


325

커맨드 라인 ftp 클라이언트를 사용하여 폴더를 ftp하려고하지만 지금까지 'get'을 사용하여 개별 파일을 가져올 수있었습니다.


5
정답은 lkuty에 의해 4 월 6 일 11시 14 분 13 초입니다. 를 사용하지 마십시오 mget. 재귀 적이 지 않습니다. 이해하기 쉽게 9시 1분의 Thibaut 바레에 9월 22일 08에서 대답하지만, 옵션을 추가해야합니다 -l 0코멘트에서 언급 한 바와 같이
— chriscatfr

답변:


635

일반적으로 ftp를 올바르게 처리하는 wget을 사용할 수 있습니다 (적어도 내 경험으로는). 예를 들면 다음과 같습니다.

wget -r ftp://user:pass@server.com/

-m미러링에 적합한 것을 사용할 수도 있습니다 . 현재와 ​​동일합니다 -r -N -l inf.

신임 정보에 특수 문자가있는 경우 --user및 --password인수를 지정하여 작동시킬 수 있습니다. 특정 문자를 사용한 사용자 정의 로그인 예 :

wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/

편집 @asmaier가 지적했듯이 -r재귀 용 인 경우에도 기본 최대 수준은 5입니다.

       -r
       --recursive
           Turn on recursive retrieving.

       -l depth
       --level=depth
           Specify recursion maximum depth level depth.  The default maximum depth is 5.

하위 디렉토리를 놓치지 않으려면 미러링 옵션을 사용하는 것이 좋습니다 -m.

       -m
       --mirror
           Turn on options suitable for mirroring.  This option turns on recursion and time-stamping, sets infinite
           recursion depth and keeps FTP directory listings.  It is currently equivalent to -r -N -l inf
           --no-remove-listing.

121
더 잘 사용하십시오 wget -m( --mirror). wget -r기본적으로 재귀 깊이는 5로 제한됩니다.
— asmaier

13
내가 사용했다 --user과 --password너무 레드햇에. 내 wget은 : GNU Wget 1.11.4 Red Hat modified나는 그것이 버전이나 배포판인지 궁금합니다 ...
— devin

61
-l 0을 사용하여 무한 재귀 수준을 설정할 수 있으므로 --mirror.listing 파일과 같은 원하지 않는 부작용이 발생할 수 있습니다.
— Hnatt

28
사용 wget --ask-password -rl 99 ftp://user@server.com합니다. 이렇게하면 암호가 보이지 ps않으며 기록에 남아 있지 않습니다. 물론 ftp의 특성상 암호화되지 않은 서버로 전송됩니다.
— Walter Tross

7
bash newbs에 대한 알림 : 사용자 이름 또는 비밀번호에 제어 문자 ( $예 --user='user' --password='pa$$word'
— :)

164

Thibaut Barrère의 답변을 보완하기 위해.

나는 사용했다

wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory

서버 이름 뒤에 이중 슬래시가 있습니다. 추가 슬래시를 넣지 않으면 경로는 사용자의 홈 디렉토리를 기준으로합니다.

  • -nH 서버 이름을 딴 디렉토리를 만들지 않습니다.
  • -nc 대상에 이미 존재하는 경우 새 파일을 만들지 않습니다 (단지 건너 뜁니다)
  • --cut-dirs=5/ absolute / path / to / directory의 내용을 가져 와서 wget을 시작하는 디렉토리에 넣을 수 있습니다. 숫자 5는 경로의 5 개 구성 요소를 필터링하는 데 사용됩니다. 이중 슬래시는 추가 구성 요소를 의미합니다.

3
훌륭한. 이미 존재하는 파일을 건너 뛸 수있는 기능은 서버 마이그레이션의 최신 추가 사항을 따라 잡는 데 좋습니다. rsync는 더 효율적이고 유연하지만 때로는 해당 옵션을 사용할 수없고 FTP 만 사용할 수 있습니다.
— Jason

여기서 좋은 매개 변수는 -nc와 --cut-dirs입니다. 공유해 주셔서 감사합니다!
— 랜스 클리블랜드

2
불완전하거나 크기와 내용이 다를 수 있기 때문에 "기존 파일 건너 뛰기"를 항상 신뢰할 수는 없지만 옵션을 언급 한 것이 좋습니다
— Daniel W.

오늘날에도 rsync를 사용할 수 없을 때 여전히이 wget 명령을 사용합니다. -nc 및 --cut-dirs는 매우 유용합니다!
— Half Crazed

4
대박! 그리고 명령 줄에 암호를 입력하지 않으려면 --ftp-user=USER및 을 사용할 수 있습니다 --ask-password.
— shoover

25
ncftp -u <user> -p <pass> <server>
ncftp> mget directory

매개 변수를 사용하여 FTP 서버에 로그인 할 수 없지만 open ftp://USERNAME:PASSWORD@HOSTncftp를 시작한 후 구조를 사용하여 …
— feeela

+1-이 게시물이 오래되었다는 것을 알고 있지만 방금 건너 와서 ncftp가 사용하기 쉬웠습니다. 나는 ncftpget으로 재귀를 얻기 위해 -R을 사용했다
— Zack Macomber

wgetTAR 모드 보다 확실히 신뢰할 수 있고 빠릅니다. 감사!
— lencinhaus

3
우분투 14.04에 명시된대로 작동하지 않습니다. 나를 위해 일한 구문은 mget 대신 "get -R directory"였습니다.
— Ivan

우분투 14.04에서 나를 위해 일했습니다. 나는 그것이 단지 거기에 있었다는 것을 mget 할 필요가 없었다.
— ashley

22

경우 lftp컴퓨터 사용에 설치됩니다 mirror dir. 그리고 당신은 끝났습니다. 디렉토리를 재귀 적으로 다운로드하려면 아래 Ciro의 설명을 참조하십시오.


7
BTW, mirror -R dir재귀 디렉토리 업로드 / 업데이트 수행
— 치로 틸리郝海东冠状病六四事件法轮功

1
또한 mirror ./현재 경로에서 모든 파일과 폴더를 재귀 적으로 다운로드하는 데 사용할 수 있습니다 .
— Nabi KAZ

mirror현재 디렉토리와 하위 폴더에 대해을 입력 해도됩니다.
— Michael

17

당신이 사용할 수있는 경우 scp대신 ftp의 -r옵션을 사용하면이 작업을 수행합니다. FTP보다 최신 파일 전송 메커니즘을 사용할 수 있는지 확인합니다.


2
나는 그것이 그대로 질문에 정확하게 대답하지는 않지만 정확하게 나의 첫 생각 이었기 때문에 이것을 투표했습니다.
— metao

@ greg-hewgill을 제안 하시겠습니까? 나는 비슷한 문제를 가지고
— 미할 곤다

1
scp여전히 FTP 자격 증명이있는 경우 작동하지 않는 ssh를 사용하려고 시도합니다. 내가 함께 붙어있어 기술을 말하는 2008 코멘트에 응답 이상한 기분이 :( 현대 된 2008 좋지 않다, 나는 당신이 당신의 코멘트를 게시 한 날에 (18)를 돌았 다.
— aexl


7

리눅스에서 설치할 수있는 'ncftp'가 있습니다. 이것은 FTP 프로토콜에서 작동하며 파일과 폴더를 재귀 적으로 다운로드하는 데 사용할 수 있습니다. 리눅스에서 작동합니다. 재귀 폴더 / 파일 전송에 사용되었으며 정상적으로 작동합니다.

이 링크를 확인하십시오 ... http://www.ncftp.com/


2
ncftp는 윈도우에서도 작동합니다
— Ilya

나는 ncftp를 좋아한다! 감사합니다.
— jocull

3

당신이, 내가 강력하게 제안 할 수있는 경우 tar및 bzip(또는 gzip보트 뭐든 수레) 원격의 디렉토리 기계를-위해 상당한 크기의 디렉토리, 대역폭 절감은 아마 가치가 압축 / 압축 해제에 시간이 될 것입니다.


아마도 2008 년이지만 2013 년에는 더 이상 대역폭이 중요하지 않으며 FTP는 있지만 콘솔 액세스는 할 수 없습니다 :-)
— Daniel W.

3

명령 행 FTP를 고수하려면 NcFTP를 시도해야합니다. 그런 다음 get -R을 사용하여 재귀 적으로 폴더를 얻을 수 있습니다. 당신은 또한 완성을 얻을 것입니다.


3

wget -r ftp://url

Redhat 및 Ubuntu에 완벽하게 작동


1

사용해서는 안됩니다 ftp. telnet보안 프로토콜을 사용하지 않는 것처럼 암호는 일반 텍스트로 전송됩니다. 이를 통해 타사에서 사용자 이름과 비밀번호를 매우 쉽게 캡처 할 수 있습니다.

원격 디렉토리를 원격으로 복사하려면 다음 옵션이 더 좋습니다.

  • rsync는 ssh차이점 만 복사하고 연결이 끊어 질 경우 쉽게 중간에 다시 시작할 수 있기 때문에 를 통해 로그인 할 수있는 경우 가장 적합한 도구 입니다.

  • ssh -r 디렉토리 구조를 재귀 적으로 복사하는 두 번째로 좋은 옵션입니다.

보다:

  • rsync 매뉴얼 페이지

  • ssh 매뉴얼 페이지


안전하지 않고 단지 ftp
— JosFabre

FTP는 사용하지 않아야합니다.
— Tilo

1
나는 동의한다. 그리고 더 나은 보안을위한 제안이 항상 제공되어야합니다. 그러나 문제는 FTP에 관한 것이기 때문에 FTP를 사용해서는 안된다고 말하는 것이 도움이되지 않습니다.
— JosFabre

나는 정중하게 동의하지 않습니다. 작업에 잘못된 도구를 사용하고 있습니다. 1980 년대의 ftp보다는 안전하고 최신의 도구를 사용하는 법을 배워야합니다. 보다 구체적으로, 아무도 더 이상 ftp 서버를 실행하지 않아야합니다. : P
— Tilo

4
죄송하지만 지난 주에 FTP 연결 만있는 서버에 액세스하고있었습니다. 내 임무는 그것에서 멀리 이주하는 것이었다 .
— Antti Haapala

-6

PROMPT 명령으로 프롬프트를 전환하십시오.

용법:

ftp>cd /to/directory    
ftp>prompt    
ftp>mget  *

8
Down0 투표 : mget은 재귀 적이 지 않습니다.
— 랜스 클리블랜드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.