lftp는 수많은 리눅스용 CLI방식 ftp클라이언트중 '디렉토리 구조이동'까지 수행해주는 쓸모있는 클라이언트다.

리눅스든 윈도우든 CLI방식의 ftp클라이언트는 무조건 기본적으로 포함이 되어있는데,

ftp라는 놈이다.

신입시절에 ftp클라이언트이름이 ftp라서, ftp란것이 서비스인건지 pc에서 그냥 돌아가는프로그램인지 헷갈렸던 기억이 난다.


기본적으로 탑재된 ftp클라이언트는 CLI(Command Line Interface)로 제공되고있고,

파일 몇개정도 후딱 이동하는데 더할 나위없이 알맞다.

그런데...  디렉토리통째로 이동해야할땐?

CLI는 이게 답이 없다.


지금까지 알아낸 디렉토리이동을 지원하는 도구란 lftp, ncftp, scp, rsync 뭐.. 요 정도?

우리회사에서는 간혹 테라바이트단위의 데이터이전 작업을 한다.

몇시간씩 데이터이전을 하는데, 디렉토리이동을 지원해주지않으면.. 밉다.

그리고, 이동시 데이터파일들 변경날짜, 소유권등도 유지해주는 "archive 기능"도 필요할 경우가 있다.

로그도 남겨주면 좋고... 에러로그가 친절하면 더 좋다.


그래서, 나는 대용량의 파일이동을 할때면 lftp, rsync를 많이 쓴다.



1. 디렉토리 구조이동

   -  이 기능은 아래와 같은 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. 스크립팅 기능



6. 속도 제한기능

    - lftp.conf 전체 속도 제한 방법
      set net:limit-rate down:up (0은 속도제한 없음)
    - 예제) 3MByte/s 로 다운제한
      set net:limit-rate 3145728:0

2009/05/11 17:38 2009/05/11 17:38

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다