====== 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 | 원격 시스템의 캐릭터셋을 정의한다. | ===== 명령어 ===== * 스크립트를 통해 파일을 업로드 하거나 다운로드 할 때 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에 대한 옵션입니다. ==== du ==== - 전체의 용량 확인 ==== gzip ==== - gzip으로 압축된 파일을 전송하지 않고 볼 수 있는 zcat 과 zmore 명령어를 지원한다. lftp starlits@10.71.73.109:~> help zcat Usage: zcat Same as cat, but filter each file through zcat lftp starlits@10.71.73.109:~> help zmore Usage: zmore 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}