목차

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:pass@sysdba.net/*.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 원격 시스템의 캐릭터셋을 정의한다.

명령어

mget

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

mirror

  1. 동기화(rsync와 유사한 기능이라고 보심됩니다.)
  2. 기본 사용법
     lftp -c "mirror ftp://id:pass@sysdba.net/ /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:pass@sysdba.net/ /target" 

du

  1. 전체의 용량 확인

gzip

  1. gzip으로 압축된 파일을 전송하지 않고 볼 수 있는 zcat 과 zmore 명령어를 지원한다.
lftp starlits@10.71.73.109:~> help zcat
Usage: zcat <files>
Same as cat, but filter each file through zcat
lftp starlits@10.71.73.109:~> 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 starlits@10.1.1.10:~>

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}