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

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


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

3

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


3

wget -r ftp://url

Redhat 및 Ubuntu에 완벽하게 작동


1

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

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

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

  • 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.