Lftp

  1. commandline interface 기반의 강력한 ftp client
  2. ftp, http, sftp, https, ftps 의 다양한 프로토콜 지원
  3. 심각한 에러에 대한 예외 처리가 잘 되어있고, 실패했을시 자동으로 다시 시도
  4. ftp서버가 REST명령어를 지원하지 않더라도 lftp는 성공적으로 전송을 끝내기 위해서 재시도 한다
  5. 백그라운드 모드를 지원하다 [/summary]
  6. lftp는 ipv6를 지원한다. 물론 ftp proxy , http proxy 등 라우레벨 까지 지원한다.
  7. lftp는 ssl 지원가능하다.

환경설정

  1. lftp의 기본 환경 설정파일은 /etc/lftp.conf 입니다.
  2. 명령어 line에서도 설정을 할수있습니다.
    스크립트 사용시 필요한 옵션에 대해 기술합니다.
  3. 사용예 : 환경설정 사이의 구분은 ; 로 합니다.
    lftp -c "set ftp:passive-mode off;set net:max-retries 1;set net:timeout 5; mget -c ftp://id:[email protected]/*.tgz" 
ftp:passive-mode off 방화벽이 설치되어있는 서버에 접속할때 유용합니다.
net:max-retries 1 접속이 실패하고 재 시도하는 횟수를 적습니다.
cron등으로 백업 스크립트를 돌릴 경우 기본으로 설정되어있는 0(unlimited)일 경우
무한정 재시도를 하게되어
이후의 cron job에 영향을 주게 됩니다.
따라서 cron등을 사용한 자동화 프로그램에서는 꼭 설정해 주는것이 좋습니다.
set net:timeout 5 접속시도 시간이 timeout시간을 초과할 경우 재 접속을 시도합니다.(초 단위)
net:limit-rate 1000000 초당 전송되는 byte를 제한하는데 쓰입니다.
set file:charset cp949 로컬 시스템의 캐릭터셋을 정의한다.
set ftp:charset cp949 원격 시스템의 캐릭터셋을 정의한다.

명령어

  • 스크립트를 통해 파일을 업로드 하거나 다운로드 할 때 ncftpget등을 사용하게 되는데 2G이상의 파일을 받지 못하는 경우가 있습니다.
    이러한 문제를 해결하고 rsync를 통해 동기화를 하는 듯한 기능까지 가지고 있는 lftp를 소개 합니다.

mget

  1. 여러개의 파일을 다운 받을때
  2. 기본 사용법
     lftp -c "mget ftp://id:[email protected]/*.tgz" 
  3. 이어받기(이미 동일한 파일이 있으면 받지 않습니다.)
     lftp -c "mget -c ftp://id:[email protected]/*.tgz" 

mirror

  1. 동기화(rsync와 유사한 기능이라고 보심됩니다.)
  2. 기본 사용법
     lftp -c "mirror ftp://id:[email protected]/ /target" 
  3. remote site의 id의 home디렉토리와 접속서버의 /target 디렉초리를 동기화 시킵니다.
  4. 유용한 옵션
    1. c : mget과 마찬가지로 이어받기를 합니다.
    2. e : rsync의 –delete와 같은 기능으로 remote site에 파일이 삭제되었을 경우 current site에서도 제거를 합니다.
    3. R : 일반적으로 remote site가 기준이되어 이를 동기화 하는데
      -R옵션을 주게되면 current site를 기준으로 remote site에 변경을 가하게됩니다.
      원격서버에 업로드(reverse mirror)
  5. 사용예
     lftp -c "mirror -c -e ftp://id:[email protected]/ /target" 
  • lftp 다음의 -c 와 mirror 다음의 -c는 서로 다른 옵션입니다.
    즉 전자는 lftp프로그램에 대한 옵션이고 후자는 mirror에 대한 옵션입니다.

du

  1. 전체의 용량 확인

gzip

  1. gzip으로 압축된 파일을 전송하지 않고 볼 수 있는 zcat 과 zmore 명령어를 지원한다.
lftp [email protected]:~> help zcat
Usage: zcat <files>
Same as cat, but filter each file through zcat
lftp [email protected]:~> help zmore
Usage: zmore <files>
Same as more, but filter each file through zcat

sftp

  1. sftp프로토콜을 이용하여 보안 접속을 할 수 있다.
  2. lftp는 이런 보안 프로토콜을 제공하기 때문에 더욱 다양한 환경에서 파일전송을 쉽게 할 수 있다.
  3. $ lftp -u starlits sftp://10.1.1.10
    password:
    lftp [email protected]:~>

http

  1. http를 지원한다.
  2. 자체 파서로 링크를 분석하여 디렉토리 구조로 나타낸다.
  3. 웹기반 ftp서버에 쉽게 접근하여 원하는 자료를 다운 받을 수 있는 강력한 기능을 내장하고 있다.
    oracle@eagle:~/install$ lftp http://www.adminschool.net
    cd ok, cwd=/
    lftp www.adminschool.net:/>

backgroud jobs

  1. 만약 모든 작업이 끝나지 않은 상태에서 lftp를 정지해야 한다면, 작업 내용을을 백그라운드로 돌릴 수 있다.
  2. lftp는 쉘과 비슷한 명령어 문법을 제공한다. background(&), () 묶여진 명령어 그룹,
  3. 하던 작업을 백그라운드로 돌리고 싶으면 Ctrl+z키를 누르고, 다시 wait명령어로 포그라운드로 돌릴 수 있다.
  4. 돌고 있는 작업들을 보려면 jobs명령으로 볼 수 있다. 어떤 명령어(cat, ls …)는 리다이렉트를 지원한다.
  5. 이런 명령어들은 논리연산자(&&, ||)등을 사용할 수 있다.
  6. 첫번째 명령어는 file내용을 리다이렉트를 이용하여 gzip으로 압축하여 file.gz으로 저장하는 방법을 보여주는 것이며,
    다음 라인은 백그라운드 모드로 file을 내려 받는 것을 보여 주며,
    마지막 라인은 명령어들을 묶고, && 조건 연산을 사용하여 백그라운드 모드로 돌리는 것을 보여준다.
    lftp> cat file | gzip > file.gz
    lftp> get file &
    lftp> (cd /path && get file) &

at / queue

  1. at 명령어를 사용하여 정해진 시간에 작업을 실행할수도 있며,
    queue명령어를 사용하여 명령어를 차례대로 실행시킬수 있다.
  2. 물론 진행상황을 보려면 jobs명령으로 가능하다.

예제

  1. lftp에 접속한다.
     $ lftp -u {username} {ftp_url} 
  2. passive mode를 설정한다.
     lftp> set ftp:passive-mode off 
  3. 원격 ftp 서버에 있는 데이타를 가지고 온다.
     lftp> mirror {directory|filename} 
  4. 로컬에 있는 파일을 ftp 서버로 전송한다.
     lftp> mirror -R {directory|filename} 

심화예제

Create a script for lftp:

Code:

open ftp://username:[email protected]
mirror -R -v --only-newer /home/moglum/folderToBackup /remoteFolder

and a shell script to execute it

Code:

lftp -f backupScript.txt &
로긴 후 수정하실 수 있습니다. 관심있는 분들의 많은 참여 부탁드립니다. 문법은 Formatting Syntax참조하세요.

* 출처: debianlinux.or.kr