1. 程式人生 > >Shell指令碼實現FTP上傳下載檔案

Shell指令碼實現FTP上傳下載檔案

Linux下使用Shell指令碼實現FTP自動上傳和下載檔案

登入FTP實現下載檔案功能

FTP伺服器:10.11.10.11
FTP路徑:Down
本地路徑: ./
將檔案從FTP下載到本地的指令碼如下:

批量下載指令碼程式碼

#從FTP上批量下載檔案到本地
#!/bin/sh
ftp -v -n 10.11.10.11<<EOF
user ftpuser ftppwd
binary
cd Down
lcd ./
prompt
mget *
bye
EOF
echo "download from ftp successfully"

下載單個檔案指令碼程式碼

#從FTP上下載單檔案到本地
#!/bin/sh ftp -v -n 10.11.10.11<<EOF user ftpuser ftppwd binary cd Down lcd ./ prompt #get down.txt get down.txt note.txt bye EOF echo "download from ftp successfully"

登入FTP實現上傳檔案功能

FTP伺服器:10.11.10.11
FTP路徑:Up
本地路徑: ./
將檔案從本地傳到FTP的指令碼如下:

批量上傳指令碼程式碼

#從本地向FTP批量上傳文件
#!/bin/sh
ftp -v -n 10.11.10.11
<<EOF user ftpuser ftppwd binary hash cd Up lcd ./ prompt mput * bye #here document EOF echo "commit to ftp successfully"

上傳單個檔案指令碼程式碼

#從本地向FTP上傳單個文件
#!/bin/sh
PUTFILE = up.txt
ftp -v -n 10.11.10.11<<EOF
user ftpuser ftppwd
binary
cd Up
lcd ./
prompt
put $PUTFILE
bye
#here document
EOF
echo
"commit to ftp successfully"

命令解釋

登入FTP

ftp -i -n 10.11.10.11 << EOF

<< 是使用即時檔案重定向輸入
EOF是即時檔案的標誌它必須成對出現,以標識即時檔案的開始和結尾。
ftp常見的幾個標誌有:

-d:使用除錯模式,但必須編輯 /etc/syslog.conf 檔案並新增以下中的一項:user.info FileName 或 user.debug FileName。
-g:禁用檔名中的元字元拓展,即取消全域性檔名。
-i :關閉多檔案傳輸中的互動式提示。
-n:防止在起始連線中的自動登入。否則, ftp 命令會搜尋 $HOME/.netrc 登入項,該登入項描述了遠端主機的登入和初始化過程。
-v:顯示遠端伺服器的全部響應,並提供資料傳輸的統計資訊,即在程式執行時顯示詳細的處理資訊。

輸入FTP使用者名稱和密碼

user ftpuser ftppwd

ftpuser:登入FTP時的使用者名稱
ftppwd:登入FTP時的密碼

通過binary命令傳輸檔案

binary

FTP檔案傳輸型別有: ascii、binary、ebcdic、image、local M 和 tenex。

– ascii:將檔案傳輸型別設定為網路 ASCII。此型別為預設值,即預設使用ascii方式進行傳輸。
– binary:將檔案傳輸型別設定為二進位制映像。需要使用binary方式傳輸的檔案型別有ISO檔案、可執行檔案、壓縮檔案、圖片等。此型別可能比 ASCII 傳送更有效。
– ebcdic:將檔案傳輸型別設為 EBCDIC。
– image:將檔案傳輸型別設定為二進位制映像。此型別可能比 ASCII 傳送更有效。
– local M:將檔案傳輸型別設定為本地。M 引數定義每計算機字位的十進位制數。此引數沒有預設值。
– tenex:將檔案傳輸型別設為 TENEX 機器需要的型別。

切換雜湊符號 (#) 列印

hash

當用get或put命令傳送一個數據塊時,讓FTP顯示一個#,這是看得見的確定資料在傳輸的訊號,在使用者不確信網路是否工作時有用。當傳輸很大的檔案時,如果FTP已顯示這種資訊,表示傳輸正在進行。hash命令是一個布林變數式的命令,用hash命令開啟顯示#開關,再用hash命令關閉顯示。

切換目錄

分別在本地和FTP上進入對應資料夾下:
到FTP上對應路徑(這裡表示進入Dwon資料夾下):

cd ./Down

到本地的對應路徑(這裡表示在當前資料夾下):

lcd ./

切換互動式提示

prompt

使用mget或mput時,prompt命令讓FTP在傳輸每個檔案前進行提示,這樣防止覆蓋已有的檔案。若發出prompt命令時已經啟動了提示,FTP將把提示關掉,此時再傳輸所有的檔案則不會有任何提問。

檔案傳輸

下載檔案

下載多個檔案:
格式:mget [remote-files]
例如:獲取遠端所在資料夾下所有檔案

mget *
#或
mget *.*

注:mget . 每下載一個檔案,都會有提示。如果要除掉提示,則在mget . 命令前先執行:prompt off。

下載單個檔案:
格式:get [remote-file] [local-file]
例如:獲取遠端FTP上的a.txt檔案

get a.txt

上傳檔案

上傳多個檔案:
格式:mput local-files
例如:將所在資料夾下所有檔案上傳到FTP上

mput *

上傳單個檔案:
格式:put local-file [remote-file]
例如:將本地a.txt檔案上傳到遠端FTP上

put a.txt

斷開連線

bye

結束檔案傳輸會話並退出 ftp 命令,與quit命令相同。

分界符標誌

... << EOF
#execute shell
EOF

EOF只是一個分界符標誌,完全可以用abc, ! 等替換,也一樣的功能,只是大家都習慣用EOF來表示。
<<用法:當shell看到<<的時候,它就會知道下一個詞是一個分界符。在該分界符以後的內容都被當作輸入,直到shell又看到該分界符(位於單獨的一行)。因此分界符可以是定義的任何字串。

相關推薦

Shell指令碼實現FTP下載檔案

Linux下使用Shell指令碼實現FTP自動上傳和下載檔案 登入FTP實現下載檔案功能 FTP伺服器:10.11.10.11 FTP路徑:Down 本地路徑: ./ 將檔案從FTP下載到本地的指令碼如下: 批量下載指令碼程式碼 #從

Java 實現Ftp下載檔案

最近專案中需要實現將檔案先存放到ftp上,需要的時候再從ftp上下載,做的過程中碰到了問題,發現中文檔名的無法上傳到ftp上,ftp上的中文檔名的檔案下載不下來,幾番折騰,終於搞定了,記錄一下備忘。首先給工程新增maven依賴,pom.xml檔案中新增:<depende

java實現FTP下載:FTPClient類進行FTP下載檔案(包含導致假死現象)

介紹:  FTPClient是一個強大的FTP上傳下載工具,可以實現各種方式的ftp檔案傳輸,可以支援上傳下載各種大檔案(已在實踐中使用),而且存在官網使使用者方便的使用這個工具等等。 1.首先,程式中設定ftp請求方式為被動模式,即程式去請求ftp伺服器,要求伺服器來

Linux系統中使用lftp命令實現FTP下載

lcd 工作 亂碼問題 pwd -- cd 命令 史記 size ls 命令 Linux 下常用的操作命令有 ftp、 lftp 和 sftp,圖形化界面非常好用的有 FileZilla。不過在服務器命令界面中,lftp使用比較方便,功能也比ftp更加強大。lftp的界面

Windows環境在cmd中使用ftp下載檔案 檢視端口占用情況

cmd使用 端口占用 ftp上傳下載檔案 上傳 下載 端口占用 有時候在執行一些開發工具的時候經常會碰到埠被佔用的情況,比如adb執行埠被其它流氓軟體佔用,解決方法如下 開啟執行 彈窗,輸入cm

CentOS 安裝rz和sz命令,實現ftp下載功能

lrzsz在linux裡可代替ftp上傳和下載。 windows 需要向centos伺服器上傳檔案,可直接在centos上執行命令yum -y install lrzsz 程式會自動安裝好,然後如你要下載者sz [找到你要下載的檔案] 如果你要上傳,者rz 瀏覽找到你

Ftp下載檔案,並能自定義進度條展示(FtpClient)

前一段時間,自己寫了一個java專案釋出在一個免費的java平臺上但是該平臺給專案的是虛擬路徑並不能上傳檔案。後來想到應用ftp作為上傳檔案的儲存器。 ftp上傳的工具類有sun(sun.net.*)和apache(org.apache.commons.net.ftp.* 

JAVA 實現FTP下載(sun.net.ftp.FtpClient)

package com.why.ftp;      import java.io.DataInputStream;      import java.io.File;      import java.io.FileInputStream;      import java

使用Apache Commons Net API實現FTP下載過程中的坑點

       最近專案需要實現FTP上傳、下載功能,採用了Apache Commons Net API。程式碼很快就完成了,但由於對相關API使用場景不是很熟悉,走了一些彎路,抽一點時間做一下總結。         A)主動被動模式選擇:FTP主動模式和被動模式的詳細介紹可

C#實現FTP下載功能

//ftp的上傳功能     private void Upload(string filename)     {         FileInfo fileInf = new FileInfo(filename);         string uri = "ftp://

定時執行Linux shell指令碼實現SFTP定時下載檔案

之所以寫這篇文章,是因為網上很多有關文章亂轉載,crontab 命令的語法都是錯的,都直接轉了,雖然很簡單,但也會浪費時間啊,尤其是對於第一次寫的同學來說。轉入正題一:定時任務(大部分文章出錯的就是這個部分)1.執行命令:crontab -e2.按 i 編輯檔案,新增命令如下

java實現FTP(檔案)、下載(檔案、資料夾、資料夾遞迴)、刪除(檔案、資料夾遞迴)

提示:必須先保證有在FTP上上傳、下載、刪除的許可權! 本文結構 ---- 先給出測試樣例(圖片版),再給出工具類程式碼(文字版)! 上傳測試 注意:.uploadFile(String remoteDir, String remoteFileName, F

使用指令碼FTP下載檔案

由於最近勒索病毒變種又一次爆發,公司內部封鎖了TCP 445埠。導致原來通過檔案共享的方式上傳下載的計劃任務無法執行。所以,我開設了FTP伺服器來完成這個工作。 關於如何建立FTP伺服器,請看這裡 Windows 2012 R2上搭建IIS管理使用者的隔離模式FTP http://blog.51cto.c

java+jsp程式碼實現FTP伺服器下載檔案

首先宣告一下。jsp從ftp伺服器上面下載檔案,有兩種方法1.直接給出檔案的地址 2.將檔案作為位元組流返回給瀏覽器 一 、先說第一種吧(這種發放很簡單)。 1.直接使用一個超連結:<a href='ftp://FTP使用者名稱:密碼@IP地址:埠號+ 後面是路徑 (

Linux使用Shell指令碼實現FTP自動下載檔案,並記錄下載檔案日誌

Linux使用Shell指令碼實現FTP自動下載檔案,並記錄下載檔案日誌 最近初學shell程式設計,記一下自己寫的第一個指令

Java FTP下載實現

.net 一個 bin 上傳文件 pre 上傳下載 ole 切換 apach 昨天修改了一個接口,看到它涉及FTP的上傳與下載,用的是:org.apache.commons.net.ftp.FTPClient,它只支持FTP,不支持SFTP 總結下來如此使用: //創建對

老男孩教育每日一題-第95天-shell腳本知識點:書寫腳本完成ftp下載

ftp腳本 ftp上傳腳本 ftp下周腳本 每日一題 題目日常工作中經常用到FTP,進行文件的共享與下載,單對於有些不熟悉FTP命令行人員使用FTP進行共享文件管理,是一件很頭疼的事。而且FTP如果有些文件需要每天定時進行上傳或下載,人為重復相同工作也是沒有意義的因此如何編寫自動下載或上傳FT

Struts框架下載檔案輔助類,簡單實現Struts圖片以及下載

       首先在看這篇文章的前提下,你得會用Struts框架,有一定的基礎瞭解,說白了瞭解怎麼搭建就行了,然後基本就能順利執行本篇文章的Demo,當然這個類不僅僅侷限於圖片上傳下載的,因為是自己用流寫的方法所以可以支援其他檔案上傳下載。

用java實現ftp檔案

實際專案需求:從資料庫查詢資訊,在本地生成檔案,再上傳到ftp 所用Jar包:NetComponents.jar 核心程式碼: import java.io.File; import java.io.FileInputStream; import java.io.IOExcepti

Java實現FTP檔案到Linux伺服器的那些坑

一、Linux安裝FTP服務         首先Linux伺服器需要安裝FTP服務,步驟如下: 1、執行如下ftp服務安裝命令: yum install vsftpd 可能會出現如下錯誤: "Couldn't open file /m