FTP 指令是跨平台 (DOS/Windows/Linux/UNIX) 通用的檔案傳輸介面。熟練掌握命令列 FTP 不僅能在無 GUI 環境 (Server Core、救援模式、嵌入式裝置) 作業,更能編寫自動化腳本實現無人值守傳輸。本文以實戰範例串聯核心指令,並附上完整指令表供查閱。
> ftp
ftp> open home4u.at.china.com
Connected to home4u.china.com.
User: yepanghuang
Password: ********
ftp> put a:\index.html # 上傳單一檔案
ftp> dir # 列出遠端目錄
ftp> cd images # 切換遠端目錄
ftp> mget *.jpg # 批次下載
ftp> bye # 斷開連線
| 指令 | 別名 | 功能 | 關鍵參數/行為 |
|---|---|---|---|
open | - | 建立連線 | open host [port] |
put | send | 上傳單一檔案 | put local-file [remote-file] |
mput | - | 批次上傳 | mput local-files* 支援萬用字元 |
get | recv | 下載單一檔案 | get remote-file [local-file] |
mget | - | 批次下載 | mget remote-files* 預設逐一確認,搭配 prompt 關閉互動 |
cd | - | 切換遠端目錄 | cd directory |
cdup | - | 返回上層目錄 | 等同 cd .. |
lcd | - | 切換本地工作目錄 | 極易混淆,請牢記 l = local |
dir / ls | - | 列出遠端目錄 | dir [remote-dir] [local-file] 可導出列表到本地檔案 |
delete / mdelete | - | 刪除遠端檔案 | 需寫入權限 |
mkdir / rmdir | - | 建立/刪除遠端目錄 | - |
rename | - | 重命名遠端檔案 | rename from to |
chmod | - | 修改遠端檔案權限 | 需伺服器支援 SITE CHMOD |
ascii | - | 設定 ASCII 傳輸模式 | 文本檔預設,自動換行轉換 |
binary / image | - | 設定二進制傳輸模式 | 執行檔、壓縮檔、圖片必須用此模式 |
prompt | - | 切換互動確認模式 | 關閉後 mget/mput 不再逐一詢問 |
bell | - | 傳輸完成響鈴提醒 | 長時間傳輸好幫手 |
hash | - | 顯示傳輸進度 # 號 | 每 1KB/2KB 顯示一個 # |
status | - | 顯示當前連線狀態 | 模式、結構、詳細資訊 |
system | - | 顯示遠端作業系統類型 | - |
help / ? | - | 列出所有指令或單指令說明 | help command |
bye / quit / close | - | 斷開連線 | close 保留 FTP 提示符,bye/quit 完全退出 |
macdef | - | 定義巨集指令 | 簡化重複操作流程 |
@echo off
set FTP_SERVER=ftp.example.com
set USER=backup_user
set PASS=StrongPassword123
set LOCAL_DIR=D:\Backup\Daily
set REMOTE_DIR=/backup/daily
echo open %FTP_SERVER% > ftp_cmd.txt
echo %USER% >> ftp_cmd.txt
echo %PASS% >> ftp_cmd.txt
echo binary >> ftp_cmd.txt
echo prompt off >> ftp_cmd.txt
echo cd %REMOTE_DIR% >> ftp_cmd.txt
echo lcd %LOCAL_DIR% >> ftp_cmd.txt
echo mput *.* >> ftp_cmd.txt
echo bye >> ftp_cmd.txt
ftp -s:ftp_cmd.txt
del ftp_cmd.txt
排程器每日執行,即可實現無人值守備份上傳。
quote PASV 切換被動模式,或在用戶端啟用「被動 FTP」。REST 指令與伺服器/客戶端雙支援,或改用 SFTP/rsync。命令列 FTP 看似古老,實則是自動化運維、異構平台互通、應急搶修的「瑞士刀」。熟練核心指令、理解傳輸模式、善用腳本封裝,將讓您在無圖形介面、弱網路、受限權限的環境中依然游刃有餘。