目標 FTP 伺服器使用非標準端口,需指定 IP 與 Port 連線。
# 方式一:進入 ftp 提示符再開啟連線
ftp
ftp> open 192.168.1.100 2121
# 方式二:單行指令直接連線
ftp 192.168.1.100 2121
# 登入提示輸入使用者名稱與密碼
注意: mget 僅適用於檔案,不支援目錄遞迴。
ftp> cd /remote/path
ftp> lcd /local/path
ftp> prompt off # 關閉逐一確認提示(批量下載必開)
ftp> mget *.log
ftp> mget file1.txt file2.txt file3.txt
wget -r -nH --cut-dirs=1 -P /local/path \
--user=username --password='password' \
ftp://192.168.1.100:2121/remote/path/
# -r 遞迴 -nH 不建立主機名目錄 --cut-dirs=1 跳過第一層遠端目錄 -P 本地儲存路徑
# 安裝
yum install lftp # 或 apt install lftp
# 互動式
lftp -u username,password -p 2121 192.168.1.100
lftp> mirror -c -P 5 /remote/path /local/path
# -c 斷點續傳 -P 5 並行 5 個連線
# 單行指令(適合腳本)
lftp -c "open -u username,password -p 2121 192.168.1.100; mirror -c -P 5 /remote/path /local/path"
# 遠端打包並透過 SSH 串流傳輸到本地解包
ssh user@192.168.1.100 "tar -czf - -C /remote/path ." | tar -xzf - -C /local/path
# 或使用 rsync(需 SSH,支援增量、壓縮、權限保留)
rsync -avz -e "ssh -p 22" user@192.168.1.100:/remote/path/ /local/path/
ftp> passive # 切換被動模式(預設),適合客戶端防火牆/NAT 環境
ftp> passive off # 主動模式
| 指令 | 說明 |
|---|---|
ls / dir | 列出遠端目錄 |
cd path | 切換遠端目錄 |
lcd path | 切換本地目錄 |
binary | 二進位模式(預設,圖片/壓縮檔必須) |
ascii | ASCII 模式(文字檔跨平台) |
get file | 下載單一檔案 |
put file | 上傳單一檔案 |
mget files | 下載多檔案(配合 prompt off) |
mput files | 上傳多檔案 |
delete file | 刪除遠端檔案 |
mkdir dir | 建立遠端目錄 |
bye / quit | 離開 FTP |
#!/usr/bin/expect
spawn ftp 192.168.1.100 2121
expect "Name*:"
send "username\r"
expect "Password:"
send "password\r"
expect "ftp>"
send "prompt off\r"
send "cd /remote/path\r"
send "lcd /local/path\r"
send "mget *.csv\r"
expect "ftp>"
send "bye\r"
expect eof
| 場景 | 推薦工具 | 理由 |
|---|---|---|
| 簡單多檔下載 | ftp + mget | 系統內建、無依賴 |
| 目錄遞迴下載 | wget / lftp mirror | 支援遞迴、斷點續傳 |
| 大量/大檔/生產環境 | lftp / rsync | 平行下載、增量同步、頻寬控制 |
| 自動化部署腳本 | lftp -c / rsync | 非互動、可程式化、錯誤處理完善 |
根據檔案規模、網路環境與自動化需求選擇適當工具,避免使用傳統 ftp 進行目錄遞迴下載的痛苦體驗。