1. 程式人生 > 實用技巧 >Linux利用ftp命令上傳下載檔案

Linux利用ftp命令上傳下載檔案

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