lftp 사용법

lftp는 수많은 ftp클라이언트중 ‘디렉토리 구조이동’까지 수행해주는

쓸모있는 클라이언트다.

수많은 기본기능 외에 내가 주목하는 특수기능

1. 디렉토리 구조이동

   – 윈도우 GUI환경에서의 클라이언트는 당연히 되는게,

      리눅스 터미널에서의 ftp는 구현이 안돼있다.

      바보같은 개발자는 이게 안되서 우는 경우가 있다.

      ftp로는 디렉토리구조복사가 안되니, rcp를 쓸게있게 열어달라는거다.

      이런 바보들에게는 이 기능을 추천해주자.

       (몰라서 바보가 아니다.. rcp의 오픈으로 얼마나 위험한지 개념이 없는게 바보인거다.

         아니면, 그런 위험을 나한테 감수하라는 비겁자이거나..–)

      이 기능은 아래와 같은 syntax를 따른다.

      이해하기 힘들면, 당분간 외워서 치자.

     lftp -c ‘open -e “mirror [REMOTE_DIR] [LOCAL_DIR]” [URL]’

   – 아래와 같은 커맨드는 c (command)옵션과

     interactive모드에서의 e (execute)옵션의 용례를 보여준다.

      

     lftp -c ‘open -e “mirror /A/B /A/B” ftp://myftpid:myftppw@mysite.com’

     각론 : “mirror /A/B /A/B” 사용시

               리모트의 /A/B 디렉토리 하단의 파일및 디렉토리를

               로컬의 /A/B 디렉토리 하단으로 전송한다.

               B디렉토리가 아님을 유의할것.

              “mirror /A/B /A/B/” 로사용해야만

               리모트의 /A/B 디렉토리 자체를

               로컬의 /A/B 디렉토리 하단으로 전송한다.

               로컬측의 디렉토리구조는 /A/B/B로 변경된다.

      개선 : 1행의 명령으로 디렉토리복사를 수행하므로 상당히 쓸모있다.

               그러나, lftp에서는 기본적으로  binary 모드를 지원하므로,

               다운로드된 모든 텍스트파일에는 “^M” 문자가 붙는다.

               그러므로, 다운로드된 스크립트파일은 실행시 에러를 발생하게된다.

               sed -i ‘s/^M//’ [FILE_NAME]  으로 아쉬운대로 문자제거를 하면된다.

               커맨드 내에 ascii모드를 포함시킬 순 없을까?

2. 동기화 기능

3. 멀티 큐 기능

   – 특정사이트 내에서의 작업단위를 큐로 지정하여 별도관리 할수 있다.

4. 멀티 슬롯 기능

   – 여러 개의 사이트로의 접속을 슬롯으로 지정하여 별도관리 할 수 있다.

5. 스크립팅 기능

======================================================

스크립트를 통해 파일을 업로드 하거나 다운로드 할 때 ncftpget등을 사용하게 되는데 2G이상의 파일을 받지 못하는 경우가 있습니다.

이러한 문제를 해결하고 rsync를 통해 동기화를 하는 듯한 기능까지 가지고 있는 lftp를 소개 합니다.

## mget : 여러개의 파일을 다운 받을때

  – 기본 사용법

  lftp -c “mget ftp://id:pass@sysdba.net/*.tgz”

  – 이어받기(이미 동일한 파일이 있으면 받지 않습니다.)

  lftp -c “mget -c ftp://id:pass@sysdba.net/*.tgz”

## mirror : 동기화(rsync와 유사한 기능이라고 보심됩니다.)

  – 기본 사용법

  lftp -c “mirror ftp://id:pass@sysdba.net/ /target”

  remote site의 id의 home디렉토리와 접속서버의 /target 디렉초리를 동기화 시킵니다.

  – 유용한 옵션

    -c : mget과 마찬가지로 이어받기를 합니다.

    -e : rsync의 –delete와 같은 기능으로 remote site에 파일이 삭제되었을 경우 current site에서도 제거를 합니다.

    -R : 일반적으로 remote site가 기준이되어 이를 동기화 하는데 -R옵션을 주게되면 current site를 기준으로 remote site에 변경을 가하게됩니다.(reverse mirror)

  – 사용예

  lftp -c “mirror -c -e ftp://id:pass@sysdba.net/ /target”

  * lftp 다음의 -c 와 mirror 다음의 -c는 서로 다른 옵션입니다.

즉 전자는 lftp프로그램에 대한 옵션이고 후자는 mirror에 대한 옵션입니다.

## 환경설정 변경하기

lftp의 기본 환경 설정파일은 /etc/lftp.conf 인데 명령어 line에서도 설정을 할수있습니다. 이와같은 옵션중에 스크립트 사용시 필요한 옵션에 대해 간단히 설명하죠.

ftp:passive-mode off : 방화벽이 설치되어있는 서버에 접속할때 유용합니다.

net:max-retries 1 : 접속이 실패하고 재 시도하는 횟수를 적습니다. cron등으로 백업 스크립트를 돌릴 경우 기본으로 설정되어있는 0(unlimited)일 경우 무한정 재시도를 하게되어 이후의 cron job에 영향을 주게 됩니다. 따라서 cron등을 사용한 자동화 프로그램에서는 꼭 설정해 주는것이 좋습니다.

set net:timeout 5 : 접속시도 시간이 timeout시간을 초과할 경우 재 접속을 시도합니다.(초 단위)

net:limit-rate 1000000: 초당 전송되는 byte를 제한하는데 쓰입니다.

  – 사용예 : 환경설정 사이의 구분은 ; 로 합니다.

  lftp -c “set ftp:passive-mode off;set net:max-retries 1;set net:timeout 5; mget -c ftp://id:pass@sysdba.net/*.tgz”

서진우

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.