FTP(File Transfer Protocol)是網路檔案傳輸的基石協定。雖然圖形化客戶端普及,但掌握 CLI 內部指令仍是系統管理員、自動化腳本撰寫者的必備技能。本文整理 73 條標準 FTP 內部命令,附帶參數說明與實戰範例。
ftp [-v] [-d] [-i] [-n] [-g] [主機名]
-v 顯示伺服器完整回應
-d 除錯模式
-i 關閉多檔傳輸互動提示
-n 禁用 .netrc 自動登入
-g 關閉檔名通配符擴展
| 指令 | 功能 | 範例 |
|---|---|---|
open host [port] | 建立 FTP 連線 | open 192.168.1.10 21 |
user user [pass] [acct] | 登入認證 | user ftpuser secret |
account [pass] | 補充存取權限密碼 | account extraword |
close / disconnect | 中斷連線(保留 ftp shell) | close |
bye / quit | 結束 ftp 會話 | bye |
verbose | 切換詳細模式 | verbose |
debug [level] | 設定除錯等級 | debug 3 |
| 指令 | 功能 | 範例 |
|---|---|---|
pwd | 顯示遠端工作目錄 | pwd |
cd dir | 切換遠端目錄 | cd /var/www/html |
cdup | 回上層目錄 | cdup |
lcd [dir] | 切換本地工作目錄 | lcd /home/user/backup |
dir [remote] [local] | 詳細列表並可存檔 | dir /etc /tmp/etclist.txt |
ls [remote] [local] | 簡易列表並可存檔 | ls *.log |
nlist [remote] [local] | 純檔名列表(適合腳本解析) | nlist /data files.txt |
mkdir dir | 建立遠端目錄 | mkdir newdir |
rmdir dir | 刪除遠端空目錄 | rmdir olddir |
delete file | 刪除單一遠端檔案 | delete test.tmp |
mdelete files | 刪除多個遠端檔案 | mdelete *.bak |
rename from to | 重命名遠端檔案 | rename old.txt new.txt |
chmod mode file | 變更遠端檔案權限 | chmod 644 index.html |
modtime file | 查看遠端檔案修改時間 | modtime data.zip |
size file | 查看遠端檔案大小 | size backup.tar.gz |
| 指令 | 方向 | 說明 | 範例 |
|---|---|---|---|
get remote [local] | 下載 | 單檔下載 | get report.pdf |
mget files | 下載 | 多檔下載(配合 prompt 關閉提示) | prompt; mget *.csv |
put local [remote] | 上傳 | 單檔上傳 | put local.zip |
mput files | 上傳 | 多檔上傳 | mput *.jpg |
append local [remote] | 上傳 | 斷點續傳/追加模式 | append bigfile.part |
reget remote [local] | 下載 | 斷點續傳下載 | reget huge.iso |
reput local [remote] | 上傳 | 斷點續傳上傳(部分客戶端支援) | reput huge.iso |
| 指令 | 功能 | 預設值 |
|---|---|---|
ascii | 文字模式(換行轉換) | 預設 |
binary / image | 二進位模式(逐位元傳輸) | — |
type [ascii|binary|ebcdic|tenex] | 設定傳輸類型 | ascii |
mode [stream|block|compressed] | 傳輸模式 | stream |
form [file|record|page] | 檔案結構 | file |
struct [file|record|page] | 傳輸結構 | file |
cr | ASCII 模式下 CR+LF → LF | 關閉 |
tenex | TENEX 主機專用類型 | — |
| 指令 | 功能 | 備註 |
|---|---|---|
hash | 每 1024 Bytes 顯示 # 進度條 | 視覺化傳輸進度 |
bell | 每指令完成響鈴 | 長傳輸提醒 |
prompt | 切換多檔互動提示 | 搭配 mget/mput |
glob | 切換檔名通配符擴展 | 同 -g 參數 |
case | mget 時大寫轉小寫 | 跨平台相容 |
runique | 本地檔名唯一化(避免覆蓋) | 自動加 .1 .2 後綴 |
sunique | 遠端檔名唯一化 | 伺服器需支援 |
proxy ftp_cmd | 次要控制連線執行指令 | 雙伺服器直傳(FXP) |
quote args | 原樣送指令給伺服器 | 如 quote SYST |
site args | 送 SITE 指令給伺服器 | 如 site CHMOD 755 file |
system | 查詢伺服器作業系統類型 | 回應如 UNIX Type: L8 |
macdef name | 定義巨集(空行結束) | 自動化腳本利器 |
$ macroname | 執行巨集 | — |
! [cmd] | 本地 Shell 暫離 | !ls -l 後自動返回 |
#!/bin/bash
HOST="ftp.example.com"
USER="backup"
PASS="secret"
ftp -n -i $HOST <<EOF
user $USER $PASS
binary
prompt
cd /remote/backup
lcd /local/backup
mput *.tar.gz
bye
EOF
熟練 FTP 內部指令能讓你在無圖形介面的伺服器、嵌入式裝置、自動化流程中游刃有餘。建議收藏本表,下次需要 reget 續傳、proxy 雙邊傳輸或 macdef 批次處理時即查即用。
MySQL 啟動報錯:'./mysql-bin.index' not found (Errcode: 13) 權限修復方案
Linux 磁碟與效能檢測雙劍合璧:df 容量監控與 hdparm 硬碟調優完整參數手冊
Linux 系統安裝 PHP cURL 擴展完整教學:兩種編譯方式詳解
Shell + awk 實時監控網卡流量腳本:零依賴、秒級刷新、生產可用
Linux 網卡設定指令與靜態 IP 設定教學 (Debian/Ubuntu 風格)
Linux 開機流程核心知識:BIOS → MBR → Bootloader → vmlinux/initrd 兩階段解析