lftp
소개/특징
commandline interface 기반의 강력한 ftp client
ftp, http, sftp, https, ftps 의 다양한 프로토콜 지원
심각한 에러에 대한 예외 처리가 잘 되어있고, 실패했을시 자동으로 다시 시도
ftp서버가 REST명령어를 지원하지 않더라도 lftp는 성공적으로 전송을 끝내기 위해서 재시도 한다
백그라운드 모드를 지원하다 [/summary]
lftp는 ipv6를 지원한다. 물론 ftp proxy , http proxy 등 라우레벨 까지 지원한다.
lftp는 ssl 지원가능하다.
환경설정
lftp의 기본 환경 설정파일은 /etc/lftp.conf 입니다.
명령어 line에서도 설정을 할수있습니다.
스크립트 사용시 필요한 옵션에 대해 기술합니다.
사용예 : 환경설정 사이의 구분은 ; 로 합니다.
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
여러개의 파일을 다운 받을때
기본 사용법
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"
du
gzip
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
sftp프로토콜을 이용하여 보안 접속을 할 수 있다.
lftp는 이런 보안 프로토콜을 제공하기 때문에 더욱 다양한 환경에서 파일전송을 쉽게 할 수 있다.
예
$ lftp -u starlits sftp://10.1.1.10
password:
lftp starlits@10.1.1.10:~>
http
http를 지원한다.
자체 파서로 링크를 분석하여 디렉토리 구조로 나타낸다.
웹기반 ftp서버에 쉽게 접근하여 원하는 자료를 다운 받을 수 있는 강력한 기능을 내장하고 있다.
oracle@eagle:~/install$ lftp http://www.adminschool.net
cd ok, cwd=/
lftp www.adminschool.net:/>
backgroud jobs
만약 모든 작업이 끝나지 않은 상태에서 lftp를 정지해야 한다면, 작업 내용을을 백그라운드로 돌릴 수 있다.
lftp는 쉘과 비슷한 명령어 문법을 제공한다. background(&), () 묶여진 명령어 그룹,
하던 작업을 백그라운드로 돌리고 싶으면 Ctrl+z키를 누르고, 다시 wait명령어로 포그라운드로 돌릴 수 있다.
돌고 있는 작업들을 보려면 jobs명령으로 볼 수 있다. 어떤 명령어(cat, ls …)는 리다이렉트를 지원한다.
이런 명령어들은 논리연산자(&&, ||)등을 사용할 수 있다.
첫번째 명령어는 file내용을 리다이렉트를 이용하여 gzip으로 압축하여 file.gz으로 저장하는 방법을 보여주는 것이며,
다음 라인은 백그라운드 모드로 file을 내려 받는 것을 보여 주며,
마지막 라인은 명령어들을 묶고, && 조건 연산을 사용하여 백그라운드 모드로 돌리는 것을 보여준다.
lftp> cat file | gzip > file.gz
lftp> get file &
lftp> (cd /path && get file) &
at / queue
at 명령어를 사용하여 정해진 시간에 작업을 실행할수도 있며,
queue명령어를 사용하여 명령어를 차례대로 실행시킬수 있다.
물론 진행상황을 보려면 jobs명령으로 가능하다.
예제
lftp에 접속한다.
$ lftp -u {username} {ftp_url}
passive mode를 설정한다.
lftp> set ftp:passive-mode off
원격 ftp 서버에 있는 데이타를 가지고 온다.
lftp> mirror {directory|filename}
로컬에 있는 파일을 ftp 서버로 전송한다.
lftp> mirror -R {directory|filename}