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


Answers

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

ftp 클라이언트 명령 줄을 사용하여 FTP 시도하고 있지만 지금까지 개별 파일을 얻으려면 'get'사용할 수있었습니다.




ftp 는 사용하지 않아야합니다. telnet 과 마찬가지로 보안 프로토콜을 사용하지 않으며 암호는 일반 텍스트로 전송됩니다. 따라서 타사에서 사용자 이름과 비밀번호를 쉽게 캡처 할 수 있습니다.

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

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

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

만나다:

  • rsync 매뉴얼 페이지

  • ssh 맨 페이지




wget -r ftp://url

Redhat 및 Ubuntu에서 완벽하게 작동합니다.




lftp 가 컴퓨터에 설치되어 있으면 mirror dir 사용하십시오. 그리고 너 끝났어. 재귀 적으로 디렉토리를 다운로드하려면 아래의 Ciro의 주석을 참조하십시오.




PROMPT 명령으로 프롬프트를 토글합니다.

용법:

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



ftp 대신 scp 를 사용할 수 있다면 -r 옵션을 사용하면됩니다. FTP보다 현대적인 파일 전송 메커니즘을 사용할 수 있는지 확인합니다.







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 / 디렉토리의 내용을 가져 와서 wget을 시작하는 디렉토리에 넣을 수있게합니다. 번호 5는 경로의 5 개 구성 요소를 필터링하는 데 사용됩니다. 이중 슬래시는 추가 구성 요소를 의미합니다.



mget을 사용해보십시오.

   mget remote-files
              Expand the remote-files on the remote machine and do a get for each file  name  thus  produced.
              See  glob  for  details on the filename expansion.  Resulting file names will then be processed
              according to case, ntrans, and nmap settings.  Files are transferred  into  the  local  working
              directory, which can be changed with ‘lcd directory’; new local directories can be created with
              ‘! mkdir directory’.

프롬프트가 표시되지 않도록 모든 파일을 묻지 않아도됩니다 (propmt 명령 참조)

하지만 ssh를 통한 scp 또는 rsync를 사용하면 가능하면 ftp보다 좋습니다.

요약하자면:

cd /dir
prompt
interactive mode off
mget *



명령 줄 FTP를 사용하려면 NcFTP를 시도해야합니다. 그런 다음 get -R을 사용하여 재귀 적으로 폴더를 가져올 수 있습니다. 완료 될 수도 있습니다.




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

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




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



가능한 경우 원격 컴퓨터의 디렉토리를 tarbzip (또는 gzip , 무엇이든지 보트를 띄우는 gzip ) 디렉토리로 지정하는 것이 좋습니다. 상당한 크기의 디렉토리 일 경우 대역폭 절약은 아마도 zip / unzip을 수행하는 데 가치가 있습니다.