[Linux] FTP CLI 명령어 완벽 가이드 및 상태 코드(Response Code) 정리

리눅스 쉘 환경에서 FTP 서버에 접속하여 파일을 업로드/다운로드하는 필수 명령어와 주요 옵션을 정리합니다. 또한 트러블슈팅 시 유용한 FTP 응답 코드(Response Code)의 의미를 설명합니다.

[Image of FTP client server data transfer diagram]

1. 서버 접속 및 로그인 (Connection)

FTP 클라이언트를 실행하여 원격 서버에 접속하는 과정입니다. open 명령어를 사용하거나 실행 시 인자로 IP를 전달합니다.

[test@zeroTest]$ ftp 210.xxx.xxx.xxx
Connected to 210.xxx.xxx.xxx.
220 web17 FTP server (Version 5.60) ready.
Name (210.xxx.xxx.xxx:test): [아이디 입력]
331 Password required for user.
Password: [패스워드 입력]
230 User test logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

2. 디렉토리 탐색 (Navigation)

FTP는 원격(Remote) 서버와 로컬(Local) 클라이언트의 디렉토리를 동시에 제어해야 합니다. 로컬 명령어 앞에는 주로 l(local)이 붙습니다.

원격 서버 (Remote) 제어

  • pwd : 원격 서버의 현재 경로 확인
  • ls (또는 dir) : 원격 서버의 파일 목록 출력
  • cd [path] : 원격 서버의 디렉토리 이동
  • cdup : 원격 서버에서 상위 디렉토리로 이동

로컬 클라이언트 (Local) 제어

  • !pwd : 로컬 클라이언트의 현재 경로 확인
  • lcd [path] : 로컬 클라이언트의 작업 디렉토리 변경 (다운로드/업로드 위치 변경 시 필수)
# 로컬 다운로드 경로를 /bin으로 변경 예시
ftp> lcd /bin
Local directory now /bin

3. 파일 전송 설정 (Transfer Settings)

파일 전송 전, 전송 모드와 시각적 피드백 옵션을 설정하는 것이 중요합니다.

전송 모드 (Transfer Mode)

바이너리 파일(이미지, 실행파일, 압축파일 등) 전송 시 반드시 binary 모드를 사용해야 파일 깨짐을 방지할 수 있습니다.

  • ascii (또는 as) : 텍스트 파일 전송 모드
  • binary (또는 bi) : 바이너리 전송 모드 (권장)

편의 옵션

  • hash : 파일 전송 진행 상황을 #(Hash Mark)로 표시 (대용량 파일 전송 시 유용)
  • prompt : 다중 파일 전송(mget/mput) 시 파일마다 확인하는 과정을 On/Off
ftp> binary
200 Type set to I.
ftp> hash
Hash mark printing on (1024 bytes/hash mark).

4. 파일 업로드 및 다운로드

단일 파일 처리와 다중 파일(Wildcard * 사용) 처리 명령어가 구분됩니다.

다운로드 (Server -> Local)

  • get [filename] : 단일 파일 다운로드
  • mget [pattern] : 다중 파일 다운로드 (예: mget *.pdf)
ftp> get thinkinjava.pdf
local: R389.PDF remote: R389.PDF
200 PORT command successful.
150 Opening BINARY mode data connection for R389.PDF (44028 bytes).
#######################
226 Transfer complete.

업로드 (Local -> Server)

  • put [filename] : 단일 파일 업로드
  • mput [pattern] : 다중 파일 업로드 (예: mput *.html)

5. 기타 관리 명령어

  • delete [filename] / mdelete [pattern] : 원격 파일 삭제
  • mkdir [dirname] / rmdir [dirname] : 원격 디렉토리 생성 및 삭제
  • chmod [mode] [file] : 원격 파일 권한 변경 (예: chmod 755 run.sh)
  • rename [old] [new] : 파일 이름 변경
  • size [filename] : 파일 크기(Byte) 확인
  • bye, quit, exit : 접속 종료

6. FTP 응답 코드 (Response Codes)

서버가 반환하는 3자리 숫자를 통해 트러블슈팅이 가능합니다. 주요 코드는 다음과 같습니다.

Code Description (의미)
150 파일 상태 정상. 데이터 연결을 엽니다. (전송 시작)
200 명령어 성공 (OK)
220 서비스 준비 완료 (접속 초기 메시지)
226 데이터 연결 닫힘. 요청 작업 성공 (전송 완료)
230 사용자 로그인 성공
331 사용자 이름 확인됨. 패스워드 필요
421 서비스 사용 불가. 연결 종료
425 데이터 연결을 열 수 없음 (방화벽, Passive 모드 이슈 등)
530 로그인 실패 (ID/PW 오류)
550 요청 작업 실패 (파일 없음, 권한 부족 등)

Next Step:
FTP는 데이터를 암호화하지 않아 보안에 취약합니다. OpenSSH에 포함된 sftp 명령어를 사용하여 암호화된 파일 전송 환경을 구성하는 방법을 검토해보십시오.

Comments