Linux利用ftp命令上傳下載檔案
阿新 • • 發佈:2020-08-18
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='mcB3!931' 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