FTP 명령어: 클라이언트와 프로토콜 참고서

모든 FTP 명령어를 한곳에 모았습니다. Windows ftp.exe나 macOS, Linux에 입력하는 명령줄 클라이언트 명령어(get, put, mget, bye)와, 그것이 통신선 위에서 옮겨지는 RFC 959 원시 프로토콜 명령어까지 담았습니다.

2026년 7월 갱신

명령줄 FTP 클라이언트 명령어

이 명령어들은 Windows(ftp.exe), macOS, Linux에 내장된 대화형 FTP 클라이언트에서 작동합니다. ftp 호스트이름으로 세션을 시작하거나(또는 ftp> 프롬프트에서 open 호스트이름), 아래 명령어를 쓰시면 됩니다. 스크립트까지 포함한 Windows 전체 설명은 Windows 명령줄에서 FTP 쓰기 안내를 보세요.

세션과 연결

명령어하는 일예시
openFTP 서버에 연결합니다(사용자 이름과 비밀번호를 묻습니다).open ftp.example.com
user열려 있는 연결에서 다시 로그인하거나 다른 사용자로 로그인합니다.user alice
close / disconnect서버 연결을 끊되 FTP 프로그램 안에는 남아 있습니다.close
bye / quit연결을 닫고 FTP 프로그램을 끝냅니다.bye
status현재 세션 설정을 보여 줍니다(모드, 형식, 켜짐/꺼짐 상태).status
!로컬 셸로 내려갑니다. exit를 입력하면 ftp>로 돌아옵니다.!dir

내려받기와 올리기

명령어하는 일예시
get / recv서버에서 파일 하나를 내려받습니다.get report.pdf
put / send서버로 파일 하나를 올립니다.put backup.zip
mget여러 파일을 내려받습니다(와일드카드를 쓸 수 있습니다).mget *.log
mput여러 파일을 올립니다(와일드카드를 쓸 수 있습니다).mput *.html
append로컬 파일을 서버의 파일 뒤에 이어 붙입니다.append part2.txt log.txt
delete서버의 파일 하나를 지웁니다.delete old.bak
mdelete서버의 여러 파일을 지웁니다(와일드카드를 쓸 수 있습니다).mdelete *.tmp
rename서버의 파일 이름을 바꿉니다.rename a.txt b.txt

디렉터리 둘러보기

명령어하는 일예시
dir / ls현재 원격 디렉터리의 파일 목록을 보여 줍니다.dir
cd원격 디렉터리를 바꿉니다.cd /public_html
lcd전송에 쓰이는 로컬 디렉터리를 바꿉니다.lcd C:\Downloads
pwd현재 원격 디렉터리를 출력합니다.pwd
mkdir서버에 디렉터리를 만듭니다.mkdir images
rmdir서버의 빈 디렉터리를 지웁니다.rmdir old-site

전송 설정과 전환 옵션

명령어하는 일예시
binary이진(image) 모드로 바꿉니다. zip, 이미지, 실행 파일, 미디어에 쓰세요. 텍스트가 아닌 파일을 내려받기 전에는 반드시 이것을 설정하세요.binary
asciiASCII 텍스트 모드로 바꿉니다(줄 끝 문자를 변환합니다). 여러 클라이언트에서 기본값입니다.ascii
promptmget/mput/mdelete에서 파일마다 확인을 받을지 켜고 끕니다.prompt
hash전송한 블록마다 #를 출력합니다. 소박한 진행 표시줄입니다.hash
verbose서버 응답을 보여 줄지 켜고 끕니다.verbose
literal / quote원시 프로토콜 명령어(아래 표 참고)를 서버로 그대로 보냅니다.literal SYST
remotehelp서버가 어떤 프로토콜 명령어를 지원하는지 물어봅니다.remotehelp
help / ?클라이언트 명령어 목록을 보여 주거나 하나를 설명합니다.help mget

전형적인 세션

C:\> ftp ftp.example.com
Connected to ftp.example.com.
User: alice
Password: ********
ftp> binary
200 Type set to I.
ftp> cd /backups
250 CWD command successful.
ftp> hash
Hash mark printing On.
ftp> get site-backup.zip
226 Transfer complete.
ftp> mput *.log
mput access.log? y
226 Transfer complete.
ftp> bye
221 Goodbye.

SSH로 작업하고 계신가요? OpenSSH의 sftp 클라이언트는 비슷하지만 별개인 명령어 모음을 씁니다. SFTP 명령어 참고서를 보세요. 서버가 아예 연결을 받지 않는다면 FTP 연결 테스터로 먼저 네트워크 문제부터 걸러 내세요.

원시 FTP 프로토콜 명령어(RFC 959)

FTP 클라이언트가 제어 연결로 실제로 보내는 명령어들입니다. 서버 기록을 읽거나, literal/quote로 문제를 살펴보거나, FTP를 직접 구현할 때 쓸모 있습니다. 검색하거나 분류로 걸러 보세요.

FTP 명령어에 대하여

FTP 프로토콜 명령어는 클라이언트가 제어 연결(기본 포트 21)로 서버에 보내는 것입니다. 서버는 세 자리 상태 코드로 답합니다. 핵심 프로토콜은 RFC 959에 정의되어 있고, 확장은 RFC 2228, 2389, 2640, 3659, 4217에 정의되어 있습니다.

서버 응답 코드가 무슨 뜻인지 찾고 계신가요? FTP 응답 코드 조회 도구를 확인해 보세요.

자주 묻는 질문

Windows 11에도 ftp.exe가 들어 있나요?

들어 있습니다. 고전적인 명령줄 FTP 클라이언트는 Windows 11과 Windows 10에 함께 담겨 옵니다. 명령 프롬프트나 PowerShell을 열고 ftp를 입력하면 시작됩니다. 일반 FTP만 지원하므로 SFTP나 FTPS 서버에는 연결하지 못합니다.

방화벽이나 공유기 뒤에서 ftp.exe가 실패하는 이유는 무엇인가요?

Windows ftp.exe는 액티브 모드만 지원합니다. 이 방식에서는 데이터를 옮길 때마다 서버가 사용자의 PC로 되돌아 연결합니다. 대부분의 가정용 공유기와 기업 방화벽이 그 들어오는 연결을 막기 때문에, 로그인한 뒤 디렉터리 목록과 전송이 멈춰 버립니다. 패시브 모드(PASV)를 지원하는 클라이언트 — 사실상 모든 화면형 FTP 클라이언트 — 는 이 문제를 피해 갑니다.

FTP 클라이언트 명령어와 FTP 프로토콜 명령어는 무엇이 다른가요?

get, put, mget, bye 같은 클라이언트 명령어는 명령줄 FTP 프로그램에 입력하는 것입니다. 프로그램은 그것을 RFC 959에 정의된 원시 프로토콜 명령어(RETR, STOR, PASV, QUIT)로 옮기고, 실제로 통신선을 타고 서버까지 가는 것은 그쪽입니다. 예를 들어 get report.pdf를 입력하면 뒤에서 TYPE I, PASV 또는 PORT, 그리고 RETR report.pdf가 보내집니다.

ftp.exe로 SFTP나 FTPS 서버에 연결할 수 있나요?

할 수 없습니다. Windows ftp.exe는 암호화되지 않은 일반 FTP만 말합니다. SFTP에는 OpenSSH의 sftp 명령(이것도 Windows 10과 11에 내장되어 있습니다)이나 그것을 지원하는 클라이언트가 필요합니다. FTPS(TLS 위의 FTP)에는 명시적 또는 암묵적 TLS를 지원하는 클라이언트가 필요한데, ftp.exe에는 둘 다 없습니다.

Windows에서 FTP 전송을 스크립트로 만들려면 어떻게 하나요?

명령어를 한 줄에 하나씩 텍스트 파일에 적고 ftp -s:commands.txt 호스트이름을 실행하세요. 파일은 보통 사용자 이름과 비밀번호를 각각 한 줄씩 적는 것으로 시작하고, 그 뒤에 binary, get 또는 put, bye 같은 전송 명령어가 옵니다. 다만 비밀번호가 평문으로 저장되고 연결도 암호화되지 않으므로, 정해진 시각에 돌리거나 사람이 지켜보지 않는 작업에는 SFTP/FTPS를 지원하고 제대로 된 예약 기능을 갖춘 도구가 낫습니다.

명령어를 외우고 싶지 않으신가요?

FTPie는 끌어다 놓는 전송, 방화벽을 그대로 통과하는 패시브 모드, 그리고 같은 프로그램 안의 SFTP와 WebDAV, 10가지가 넘는 클라우드 서비스를 갖춘 현대적인 Windows용 FTP·FTPS 클라이언트입니다. 서버 연결 3개까지 무료입니다.

Download FTPie Free