FTP 指令:用戶端與協定參考
所有 FTP 指令一次整理:你在 Windows ftp.exe、macOS 或 Linux 中輸入的命令列用戶端指令(get、put、mget、bye),以及它們在傳輸時轉換成的原始 RFC 959 協定指令。
2026 年 7 月更新
命令列 FTP 用戶端指令
這些指令適用於 Windows(ftp.exe)、macOS 與 Linux 內建的互動式 FTP 用戶端。用 ftp hostname 開始一個工作階段(或在 ftp> 提示字元下輸入 open hostname),接著使用下列指令。完整的 Windows 教學與腳本寫法,請參考 在 Windows 上從命令列使用 FTP 這篇指南。
工作階段與連線
| 指令 | 用途 | 範例 |
|---|---|---|
open | 連線到 FTP 伺服器(會提示輸入使用者名稱與密碼)。 | open ftp.example.com |
user | 在目前的連線上重新登入,或改用其他使用者登入。 | user alice |
close / disconnect | 結束與伺服器的連線,但仍留在 FTP 程式中。 | close |
bye / quit | 關閉連線並離開 FTP 程式。 | bye |
status | 顯示目前的工作階段設定(模式、類型、各項切換)。 | status |
! | 切換到本機 shell;輸入 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 |
ascii | 切換到 ASCII 文字模式(會轉換換行字元)。許多用戶端預設使用此模式。 | ascii |
prompt | 切換 mget/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)送到伺服器,伺服器再以 3 位數的狀態碼回應。核心協定定義於 RFC 959,擴充部分則定義於 RFC 2228、2389、2640、3659 與 4217。
想知道伺服器回應代碼代表什麼嗎?請使用 FTP 回應代碼查詢 工具。
常見問題
有。傳統的命令列 FTP 用戶端仍內建於 Windows 11 與 Windows 10:開啟命令提示字元或 PowerShell,輸入 ftp 就能啟動。它只支援一般的 FTP,所以無法連線到 SFTP 或 FTPS 伺服器。
Windows 的 ftp.exe 只支援主動模式,也就是每次傳輸資料時,都由伺服器反向連回你的電腦。大多數家用路由器與企業防火牆都會擋下這些連入連線,所以登入之後,目錄清單與傳輸就會卡住。支援被動模式(PASV)的用戶端,包括幾乎所有圖形化的 FTP 用戶端,都能避開這個問題。
get、put、mget、bye 這類用戶端指令,是你在命令列 FTP 程式中輸入的指令。程式會把它們轉換成 RFC 959 定義的原始協定指令(RETR、STOR、PASV、QUIT),真正在網路上傳給伺服器的是這些協定指令。例如輸入 get report.pdf,背後送出的是 TYPE I、PASV 或 PORT,以及 RETR report.pdf。
不行。Windows 的 ftp.exe 只支援一般、未加密的 FTP。若要使用 SFTP,你需要 OpenSSH 的 sftp 指令(Windows 10 與 11 也有內建),或是支援 SFTP 的用戶端。若要使用 FTPS(透過 TLS 的 FTP),則需要支援顯式或隱式 TLS 的用戶端,而 ftp.exe 兩者都不支援。
把指令寫進一個文字檔,每行一個,再執行 ftp -s:commands.txt hostname。這個檔案通常以分行寫出的使用者名稱與密碼開頭,接著是 binary、get 或 put、bye 這類傳輸指令。請注意密碼是以純文字儲存,連線也沒有加密,所以排程或無人值守的工作,更適合交給支援 SFTP/FTPS 並具備真正排程器的工具。
不想死背指令嗎?
FTPie 是一套現代化的 Windows FTP 與 FTPS 用戶端,支援拖放傳輸、能順利穿越防火牆的被動模式,還在同一個程式裡整合了 SFTP、WebDAV 與 10 多種雲端服務,最多 3 個伺服器連線免費。
免費下載 FTPie