본문 바로가기

unix

unix FTP


1. FTP 개요

1) 개요
* 기능 : File Transfer Protocol. 파일 전송 표준 프로토콜.
         인터넷에서의 근거리시스템(Local System)과 원격시스템(Remote System)
         사이의 파일 송수신.
* FTP의 종류
  - anonymous FTP : 익명 ftp 또는 공개 ftp 사이트. 누구나 접속 가능.
  - full service FTP : 해당 시스템의 계정을 소유한 사람만 접속 가능.
* Mirroring 사이트 : 유명한 anonymous FTP 사이트의 디렉토리 및 파일을 복사한
                     목록을 가진 FTP 사이트. 보통 이용자의 분산이 주목적이다.

* URL : ftp://domain-name
        ftp://User-ID:password@domain-name
* ftp 프로그램 : ncFTP(유닉스), ws_ftp, cute ftp 등.

2)anonymous FTP

ㄱ)anonymous FTP의 정의

앞에서 설명 했듯이 인터네트에서 화일 송수신을 위하여 FTP 사용하고, FTP 를 이용    
하면 전세계 어느 곳에 있는 컴퓨터와 화일을 쉽고 빠르게 송수신 할 수 있다. FTP 를 사용
하기 위해서는 일단 호스트 컴퓨터의 계정을 갖고 있어야 하며, 화일을 송수신 하고자 하는 상대 호스트로 접속하여 송수신하고자 하는 상대 호스트의 계정과 패스워드를 알고 접속해야 한다. 상대 호스트에특정 계정으로 접속한뒤 FTP의 여러 명령어를 이용하여 화일을 송수신 할수있다.

그러나 정해진 패스워드가 없이 누구나 접속하여 화일을 자유스럽게 송수신할 수 있
는 특별한 계정이 있는데,그것은 무명이란 뜻의 "anonymous" 계정이다. Public Software와 각종 문서를 널리 보급하기 위한 것이다. login을 입력한 다음에는 passwd를 입력하여야 하는데anonymous FTP의 경우 자신의 E-mail address를 입력하여야 한다.

annonymous FTP에서 passwd를 입력할 때, 자신의 E-mail에 대한 domain Name 전체를입력하는 것이 좋읍니다. 어떤 anonymous FTP에서는 사용자가 가져 간 데이타가 새로운 버젼 으로 고쳐지면, 변경된 정보의 내용을 메일로 보내오기도 하기 때문이다. 전 세계적으로 이러한 anonymous FTP 서비스를 제공하는 호스트가 수천개에 이르고 있는데, 어떤 사람이든특별한 제한없이호스트의 디스크영역을 쉽게 사용할 수 있다. 이는 여러 측면에서 매우 중요 한 의미를 갖는것으로 anonymous FTP를 이용한 화일 송수신은 인터네트 의 중요한 서비스로 자리를잡고 있다.

인터넷의 호스트 중에는 대량의 소스코드와 귀중한 정보등을 유지하는 자료창고 (Archives)로서  anonymous FTP 서비스를 제공하기 위하여 모든 디스크 혹은 모든 컴퓨터자원을 사용하는anonymous FTP전용 호스트가 다수 있다.

예를 들어 미국에는 ftp.uu.net, wuarchieve.wustl.edu, nis.nsf.net 등이 있고 한
국에도 ring.kotel.co.kr, krnic.net와 cair.kaist.ac.kr 등을 포함해 20여 이상의 anonymous FTP서비스를 제공하는 호스트가 있다.

ㄴ) anonymous FTP 접속법(%는 유닉스 프롬프트)
  * 접속법 : %ftp domain-name
     또는 %ftp<엔터>
      ftp>open domain-name
- domain name 대신 IP Address를 사용할 수 있다.
- 접속 후 Name: anonymous 또는 ftp 입력.
            Password: e-mail address 또는 User-ID@

* 웹브라우저 이용 : ftp://domain-name
  - 사용하기 쉽다.
  - 디렉토리(Tree) 구조로 출력.
  - 일반적인 binary 형태의 파일은 다운로드시 디스크에 저장.
  - 웹브라우저에서 지원하는 MIME type 파일은 웹브라우저의 화면에 출력.
  - 텍스트 형태의 파일은 그 내용을 웹브라우저의 화면에 출력.

* 접속포트:일반적으로 21번

3) 접속 불가 메시지
* Connection refused : 원격지 시스템이 임시로 사용불가.
* Host is unreachable : 원격지 시스템 또는 네트워크 이상.
* unknown host : 지정한 주소가 잘못될 경우.


2. FTP 명령어

1) 일반 명령어
   * help 또는 ? : 명령어 보기.
   * ls   : 파일 및 디렉토리 목록 보기. shell에서 ls와 같다.
   * dir  : 파일 및 디렉토리의 접근 권한과 목록을 자세히 출력.
            유닉스쉘에서 ls -al과 같은 효과.
   * pwd  : 현재 디렉토리 위치 확인.
   * cd   : Remote System에서 디렉토리 이동.
   * lcd  : Local System의 디렉토리 변경.
            파일 수신시 보관하려는 디렉토리를 변경할 때 사용.
   * close : ftp> 프롬프트에서 원격지 시스템의 연결을 끝낸다.
             ftp 프로그램은 종료하지 않는다.
   * disconnect : 원격지 시스템의 접속 종료. ftp 프로그램은 종료하지 않는다.
   * quit 또는 bye : 원격지 시스템의 접속을 종료하고 쉘상태로 복귀한다.

2) 환경 설정 명령어
   * bin 또는 binary : binary 파일을 전송하기 위한 세팅.
   * ascii  : text 파일을 전송하기 위한 세팅.
   * prompt : mput 또는 mget 명령시 대화형식 처리를 무시.
   * hash   : 파일의 전송상황 표시. #로 표시.

3) 파일 전송 명령어
   * get  : 하나의 파일을 Remote System에서 Local System으로 가져 온다.
   * mget : 여러 개의 Local System으로 가져 온다.
   * put  : 하나의 파일을 Local System에서 Remote System으로 올린다.
   * mput : 여러 개의 파일을 Remote System으로 올린다.

4) 기타 명령
  * !       : 쉘로 잠시 나가 쉘명령을 수행.
  * append  : Local 시스템에서 원격시스템으로 파일의 전송시 이어받기.
  * bell    : 명령어 수행 후 벨소리 On/Off.
  * case    : 파일 전송시 대,소문자 구분을 변환.
  * cdup    : 상위 디렉토리로 이동.
  * cr      : 텍스트 파일 전송시 엔터코드(Carriage Return) 유무를 조정.
  * delete  : 파일 삭제.
  * mdelete : 여러 파일 삭제.
  * mode    : 파일 전송 모드 선택.
  * proxy   : 지정된 명령어들을 선택적으로 사용.
  * recv    : 지정한 파일을 Local 시스템으로 전송받는다.
  * remotehelp : 원격시스템의 도움말 출력.
  * rename  : 파일 이름 변경.
  * reset   : 지정한 환경을 모두 해제.
  * rmdir   : 디렉토리 삭제.
  * send    : 원격시스템으로 파일을 전송한다.
  * struct  : 전송할 파일의 구조를 지정.
  * status  : 지정한 환경 선택사항의 현재 상태 표시.
  * trace   : 패킷라인 검사.
  * type    : 파일 전송 모드 지정.
  * user    : 사용자 이름(Name:)과 암호 설정.

3. FTP 활용

1) FTP 실행시 옵션
* ftp -i : ftp> 프롬프트에서 prompt라는 명령을 사용할 때처럼 대화형식의
           처리를 off한다.

2) Public(공개) 디렉토리
* /pub : anonymous FTP 를 사용할 때 익명사용자가 참조하는 파일들이 위치한
         공개 디렉토리.
* /pub/uploads : 일반적으로 익명사용자가 anonymous FTP에 파일을 송신할 수
                 없으나 /pub/uploads 디렉토리에는 송신 가능.
* /incoming : /pub/uploads 디렉토리와 같은 기능.

3) 디렉토리 안내
* README 파일 : 디렉토리에 대한 내용을 간단히 기술한 파일. 사용자는 이 파일을
                참조하여 해당 디렉토리의 정보를 알 수 있다.
* index 파일 : readme 파일과 비슷한 기능으로 해당 디렉토리에 있는 파일과
               하위디렉토리(Sub-directory)에 대한 간략한 설명을 기술.
               보통 index 파일 이름으로 00_index.txt을 사용한다.
* message 파일 : .message라는 이름의 파일로 디렉토리에 대한 안내문을 출력.
                 anonymous FTP에서 ftp를 이용중인 익명사용자가 어떤 디렉
                 토리로 이동했을 때 .message 파일의 내용이 화면에 출력된다.
* ls-lR 또는 ls-ltR 파일 : 디렉토리와 파일에 대한 자세한 목록을 기술.

4) 파일 받기
   : get, mget 명령 사용법
* 하나의 파일 받기 : get file-name
* 여러 파일 받기 : mget file1 file2 file3 ...
* 파일 이름이 w*로 시작되는 여러 파일 받기 : mget w*
  - 와일드카드는 파일명의 앞뒤로 모두 사용 가능. 예) w*, *.zip
* 파일 이름을 다르게 지정 : get [remote-file-name] [local-file-name]
  - remote-file-name : 원래의 파일 이름.
  - local-file-name  : 바꾸려는 파일 이름
* 텍스트 파일 읽기 : get textfile -
* 텍스트 파일을 한 페이지씩 읽기 : get textfile |more
* 대화방식을 무시하고 여러파일을 받기
    ftp>prompt
    ftp>mget file1 file2 file3 ...
* 대화방식을 무시하고 디렉토리 내의 전체 파일을 받기
    ftp>prompt
    ftp>mget *

5) 분할 파일
* 기능 : anonymous FTP 관리자가 split 명령으로 분할해 놓은 파일.
         회선불량 등의 이유로 큰 용량의 파일을 한 번에 가져 가기 곤란한
         경우를 위해 여러 개의 파일로 분할해 놓는다.
* 분할 파일 형식 : .aa .ab .ac ... 등 postfix가 있다.
* 분할 파일 합치는 방법 : cat 명령으로 합친다.
  - 사용법 : %cat file-name.* >file-name
    예) 분할된 파일들이 sample.tar.Z.aa, sample.tar.Z.ab, sample.tar.Z.ac이라면
        %cat sample.tar.Z.* >sample.tar.Z
               --> 이하 sample.tar.Z 파일은 uncompress와 tar -xvf를 이용한다.

6) FTP의 background 작업
* 유닉스쉘에서 일반적인 백그라운드 작업
  : FTP 이용 도중 ^Z 키로 FTP 작업을 중단한 다음 bg 명령으로 FTP 작업을
    백그라운드 작업으로 돌린다.

* 백그라운드 작업 방법
    ^Z(Ctrl+z) : foreground 작업 중단.
                 (단, 사용자 stty의 suspend 키가 Ctrl+Z이 아닌 다른 key로 되어
                 있을 수 있으므로 stty -a 명령으로 suspend 키 설정을 확인한다.)
    jobs  : 프로세스 작업 상태 확인.
    bg    : 현재의 작업을 backgorund로 수행한다.
    bg %n : 지정한 n번호의 작업을 backgorund로 수행한다.
    fg    : backgorund 작업 또는 중단된 작업을 foreground로 수행.


4.FTP의 실행순서(접속법에 관한 예)
ftp> open hours.interpia98.net |
| Connected to hours.interpia98.net |
| 220 hermes FTP server (Version wu-2.4(10) Wed Feb 15 10:36:23 EST 1995) ready. |
| Name (129.63.16.2:zcomm): anonymous |
| 331 Guest login ok, send your complete e-mail address as password. |
| Password: <- 여기에 자신의 전자우편 주소를 입력.(입력하지 않아도 된다) |
| 230 Guest login ok, access restrictions apply. |
| 서버 시스템 유형은 UNIX. |
| Using binary mode to transfer files. |
| ftp> |
----------------------------------------------------------------------------------
ftp> 프롬프트가 출력되고 다음과 같은
명령어들을 사용하여 파일을 전송할 수 있게 됩니다.

1) 디렉토리 보기 (dir)
ftp> 프롬프트에서 "dir" 명령어는 현재 디렉토리에 있는 파일을 보여줍니다.
----------------------------------------------------------------------------------
| ftp> dir |
| 200 PORT command successful. |
| 150 Opening ASCII mode data connection for /bin/ls. |
| total 10 |
| drwxr-xr-x 13 100 0 1536 Feb 14 09:42 Babylon-5 |
| -rw-r--r-- 1 0 0 902 Nov 16 10:34 README |
| drwxr-xr-x 7 5030 604 512 Nov 15 13:28 SISAL |
| drwxr-xr-x 2 0 0 512 Nov 7 14:57 bin |
| drwxr-xr-x 14 100 0 512 Feb 15 00:00 cbip |
| drwxr-xr-x 5 100 0 512 Oct 14 11:46 msdos |
| drwxrwxrwx 16 5088 0 512 Feb 12 15:55 philips |
| drwxrwx-wx 2 0 0 512 Feb 14 08:55 pub |
| drwxr-xr-x 4 1027 0 512 Feb 15 09:20 stu |
| drwxrwxrwx 4 5041 0 1024 Nov 17 09:52 vis94 |
| 226 Transfer complete. |
| ftp> cd pub |
---------------------------------------------------------------------------------
우선 맨 앞 필드를 보면 맨 앞 글자가 d나 -로 시작됩니다. 이는 유닉스에서 디렉토리와
일반 파일을 나타내고 있습니다.
그 다음 9비트는 rwx의 조합으로 표시됩니다. 이때 r은 읽기(read), w는 쓰기(write), x
는 실행(excute)을 나타내고 있습니다. 이때 rwx의 조합중 -로 표시된 부분은 해당되는
허가가 주어지지 않았다는 뜻입니다.
그래서, 맨 처음 rwx는 파일의 주인에 대한 허가 비트이고 그 다음 rwx는 파일의 그룹에
대한 허가 비트, 그리고 맨 마지막 rwx는 그 이외의 모든 사람들에 대한 허가 비트입니
다.특히 만약 어떤 파일이 d로 시작하고 맨 마지막 허가 비트가 r-x로 끝나는 파일은 디렉
토리이고 이 디렉토리는 cd 명령어를 사용해 그 디렉토리로 옮겨 갈 수 있다는 것을 나
타내고 있는 것입니다.
파일이나 디렉토리 이름은 가장 마지막 필드에 나와 있습니다.
예를 들어 다음과 같이 표시된 파일은
drwxr-xr-x 5 100 0 512 Oct 14 11:46 msdos
msdos라는 디렉토리를 나타내며 이 디렉토리의 주인이 아닌 사람들은 단지 ftp에서 get
이란 명령어로 파일을 가져올 할 수만 있는 디렉토리를 나타내고 있습니다. 그러므로,
put이란 명령어를 사용하여 파일을 옮길 수 없는 디렉토리입니다.

2) 디렉토리 바꾸기 (cd)
FTP 연결 초기에 사용자의 디렉토리는 보통 루트(/) 입니다. 그리고, 대부분 공개되어
있는 파일은 퍼블릭 디렉토리(/pub)에 있습니다. 현재 디렉토리를 변경하기 위해서 cd
명령을 사용하면 됩니다.

ftp> cd pub
250 CWD command successful.

3) 파일 가져오기 (get, mget) 와 파일 올리기 (put)
실제적으로 파일을 가져오거나 올리기 위해서는 get이나 put이란 명령어가 필요합니다.
먼저 파일을 가져오기 위해서는 get명령어를 사용합니다.
ftp>get filename

여러 파일을 한번에 받기 위해서 mget이란 명령어도 사용가능합니다.

ftp>mget filenames

이때 와일드 카드의 사용도 가능합니다. 파일 중에 .zip으로 끝나는 파일을 전부 전송
받을 경우 다음과 같이 입력합니다.

ftp>mget *.zip

이때 각 파일을 전송받을 때마다 항상 파일의 전송 여부를 묻는데 이를 해지하기 위해서
prompt라는 명령어를 사용하면 일일이 파일의 전송 여부에 대한 입력을 해주지 않아도
됩니다.

그리고, 파일을 올리기 위해서는 put이란 명령어를 사용합니다.

ftp>put filename

4) 아스키(ASCII) 와 바이너리(Binary)

ftp에서 파일을 전송하는 모드는 두가지입니다. 아스키 모드와 바이너리 모드 입니다.
이때 바이너리 파일을 아스키 모드로 전송할 때 정상적으로 전송할 수 없습니다.
바이너리 파일을 전송하기 위해서는 다음과 같은 명령을 사용하면 정상적인 전송을 할
수 있습니다.

ftp>binary

다시 아스키 모드로 전환하기 위해서 다음과 같이 입력하면 됩니다.

ftp>ascii

5) 직접 ftp 사이트에 접속하기 위한 명령어

직접 다른 사이트에 ftp를 사용하여 접속하기위해 먼저 open이란 명령어로 상대방 컴퓨
터에 접속합니다.

ftp>open 도메인 이름

그리고, 접속을 끊기 위해서 close라는 명령이 있읍니다.

ftp>close

마지막으로 quit라는 명령어로 ftp를 종료합니다.

ftp>quit

close는 ftp는 종료하지 않고 단지 원거리 컴퓨터와의 접속만을 종료하는 명령어입니다.

'unix' 카테고리의 다른 글

cvs login & cvs checkout  (0) 2012.02.17
2>&1 의미  (0) 2012.02.17
Chmod, Chown 사용기  (0) 2012.02.10
vi 명령어 모음  (0) 2012.02.08
unix 에서 file을 tar로 묶기  (0) 2012.02.08