Linux中如何使用ftp命令,包括如何連接ftp服務器,上傳or下載文件以及創建文件夾。雖然現在有很多ftp桌面應用(例如:FlashFXP),但是在服務器、SSH、遠程會話中掌握命令行ftp的使用還是很有必要的。
ftp命令
使用格式:ftp [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [computer]
-v:禁止顯示遠程服務器響應信息
-n:禁止自動登錄
-i:多文件傳輸過程中關閉交互提示
-d:啟用調試,顯示所有客戶端與服務器端傳遞的命令
-g:禁用文件名通配符,允許在本地文件和路徑名中使用
實例:ftp 122.122.122.122 2222
輸入用戶名、密碼,即可完成登錄。
目錄操作
FTP命令可以列出、移動、創建文件夾。
- ls -- 打印目錄列表
- !ls -- 查看本地目錄
- cd -- 改變目錄
- mkdir -- 創建文件夾
使用FTP下載文件
在下載一個文件之前,首先需要使用lcd命令設定本地接收目錄位置。
- lcd -- 指定下載目錄
- get file.txt [file_new.txt] -- 下載文件 支持更改名字
- mget *.txt -- 使用mget + 通配符下載多個文件
使用FTP上傳文件
- lcd -- 指定即將上傳的文件,所在的本地目錄。
- put file.txt [file_new.txt] -- 上傳文件 支持更改名字
- put /home/data/cwh/file.txt -- 絕對路徑
- mput *.txt -- 上傳多個文件
關閉FTP連接
完成FTP工作后,為了安全起見需要關閉連接。有3個命令可以關閉連接:
- bye -- 關閉連接
- exit -- 關閉連接
- quit -- 關閉連接
- close -- 關閉連接
其他命令
- ? -- 查詢ftp命令
- help -- 查詢ftp命令
- open [ftp server name] -- 和指定的遠程Linux FTP服務器連接
- user [user name] [password] -- 使用指定遠程Linux FTP服務器的用戶登錄
- pwd -- 顯示當前路徑
- ls -- 列出目錄和文件
- dir -- 列出目錄和文件(同上)
- mkdir [foldname] -- 創建指定目錄
- rmdir [foldname] -- 刪除指定目錄
- cd -- 切換目錄
- delete [filename] -- 刪除文件
- rename [filename] [newfilename] -- 重命名
- close -- 關閉連接 但保留FTP命令參數提示
- disconnect -- 關閉連接 但保留FTP命令參數提示(同上)
- bye -- 結束連接
- quit -- 結束連接
- ! -- 直接從遠程Linux FTP進入到本地Shell中
- exit -- (接上步)從本地Shell環境返回遠程Linux FTP中
- !ls -- 列出本地機器目錄和文件
- lcd [foldname] -- 更改本地工作目錄
- binary -- 使用二進制傳輸文件
- prompt -- 切換提示(使用mput或mget上傳下載多個文件時避免提示)
- case -- 在使用mget時,將遠程主機文件名的大寫轉換為小寫字母
- cdup -- 進入遠程主機目錄的父目錄
- system -- 顯示遠程主機的操作系統類型
- hash -- 每傳輸1024字節,顯示一個hash符號(#)
- status -- 顯示當前ftp狀態
一個完整的shell腳本
文件上傳腳本
#!/bin/bash #by anding 20200620 #for upload UBF function putftp { Pass='xxxxxxxxxxx' ftp -n 10.254.104.23 21 <<! user mcb3tran $Pass bin
#對端目錄 cd /opt/cbbs/pcs/all/data/outgoing put $1 bye ! } # 日志定義 log_date="$(date +'%Y%m%d')" log_dir="$HOME/log/$log_date/upload" log_file="$log_dir/put_%s_${log_date}.log" date1=`date +%Y%m` month1=`date -d "2 month ago" +%Y%m` file="SM"$month1"000.931" #生成文件,調用606接口生成文件 tpssreceive -i 606 sleep 20 #處理文件目錄--本地 cd /jsyy/tpss/jt_upload/SM_temp file1=`ls /jsyy/tpss/jt_upload/SM_temp/*$date1*` sed -i s/$date1/$month1/g $file1 cat $file1>$file #文件校驗 count1=`diff $file1 $file |wc -l` if [ $count1 -gt 0 ]; then echo "====================文件復制出錯,請檢查!!!!=====================" else echo "===================上傳文件中================" rm $file1 fi #上傳文件 putftp $file echo `date +"%Y/%m/%d %H:%M:%S"`" 上傳${file1}文件成功" &>$(printf "$log_file" "SM") mv $file1 BAK_$file1