ftp伺服器在網上較為常見,Linux ftp命令的功能是用命令的方式來控制在本地機和遠程機之間傳送文件,這里詳細介紹Linux ftp命令的一些經常使用的命令,相信掌握了這些使用Linux 進行ftp操作將會非常容易。
Linux ftp命令的一般格式如下:
$ ftp 主機名/IP
其中「主機名/IP」是所要連接的遠程機的主機名或IP地址。在命令行中,主機名屬於選項,如果指定主機名,ftp將試圖與遠程機的ftp服務程序進行連接;如果沒有指定主機名,ftp將給出提示符,等待用戶輸入命令:
$ ftp
ftp >
此時在ftp>提示符後面輸入open命令加主機名或IP地址,將試圖連接指定的主機。
不管使用哪一種方法,如果連接成功,需要在遠程機上登錄。用戶如果在遠程機上有帳號,就可以通過ftp使用這一帳號並需要提供口令。在遠程機上的用戶帳號的讀寫許可權決定該用戶在遠程機上能下載什麼文件和將上載文件放到哪個目錄中。
如果沒有遠程機的專用登錄帳號,許多ftp站點設有可以使用的特殊帳號。這個帳號的登錄名為anonymous(也稱為匿名ftp),當使用這一帳號時,要求輸入email地址作為口令。
如果遠程系統提供匿名ftp服務,用戶使用這項服務可以登錄到特殊的,供公開使用的目錄。一般專門提供兩個目錄:pub目錄和incoming目錄。pub目錄包含該站點供公眾使用的所有文件,incoming目錄存放上載到該站點的文件。
一旦用戶使用ftp在遠程站點上登錄成功,將得到「ftp>」提示符。現在可以自由使用ftp提供的命令,可以用 help命令取得可供使用的命令清單,也可以在 help命令後面指定具體的命令名稱,獲得這條命令的說明。
最常用的命令有:
ls 列出遠程機的當前目錄
cd 在遠程機上改變工作目錄
lcd 在本地機上改變工作目錄
ascii 設置文件傳輸方式為ASCII模式
binary 設置文件傳輸方式為二進制模式
close 終止當前的ftp會話
hash 每次傳輸完數據緩沖區中的數據後就顯示一個#號
get(mget) 從遠程機傳送指定文件到本地機
put(mput) 從本地機傳送指定文件到遠程機
open 連接遠程ftp站點
斷開與遠程機的連接並退出ftp
? 顯示本地幫助信息
! 轉到Shell中
下面簡單將ftp常用命令作一簡介。
◆啟動ftp會話
open命令用於打開一個與遠程主機的會話。該命令的一般格式是:
◆open 主機名/IP
如果在ftp 會話期間要與一個以上的站點連接,通常只用不帶參數的ftp命令。如果在會話期間只想與一台計算機連接,那麼在命令行上指定遠程主機名或IP地址作為ftp命令的參數。
◆終止ftp會話
close、disconnect、和bye命令用於終止與遠程機的會話。close和disronnect命令關閉與遠程機的連接,但是使用戶留在本地計算機的ftp程序中。和bye命令都關閉用戶與遠程機的連接,然後退出用戶機上的ftp 程序。
◆改變目錄
「cd [目錄]」命令用於在ftp會話期間改變遠程機上的目錄,lcd命令改變本地目錄,使用戶能指定查找或放置本地文件的位置。
◆遠程目錄列表
ls命令列出遠程目錄的內容,就像使用一個交互shell中的ls命令一樣。ls命令的一般格式是:
ls [目錄] [本地文件]
如果指定了目錄作為參數,那麼ls就列出該目錄的內容。如果給出一個本地文件的名字,那麼這個目錄列表被放入本地機上您指定的這個文件中。
◆從遠程系統獲取文件
get和mget命令用於從遠程機上獲取文件。get命令的一般格式為:
get 文件名
您還可以給出本地文件名,這個文件名是這個要獲取的文件在您的本地機上創建時的文件名。如果您不給出一個本地文件名,那麼就使用遠程文件原來的名字。
mget命令一次獲取多個遠程文件。mget命令的一般格式為:
mget 文件名列表
使用用空格分隔的或帶通配符的文件名列表來指定要獲取的文件,對其中的每個文件都要求用戶確認是否傳送。
◆向遠程系統發送文件
put和mput命令用於向遠程機發送文件。Put命令的一般格式為:
put 文件名
mput命令一次發送多個本地文件,mput命令的一般格式為:
mput 文件名列表
使用用空格分隔的或帶通配符的文件名列表來指定要發送的文件。對其中的每個文件都要求用戶確認是否發送。
◆改變文件傳輸模式
默認情況下,ftp按ASCII模式傳輸文件,用戶也可以指定其他模式。ascii和brinary命令的功能是設置傳輸的模式。用ASCII模式傳輸文件對純文本是非常好的,但為避免對二進制文件的破壞,用戶可以以二進制模式傳輸文件。
◆檢查傳輸狀態
傳輸大型文件時,可能會發現讓ftp提供關於傳輸情況的反饋信息是非常有用的。hash命令使ftp在每次傳輸完數據緩沖區中的數據後,就在屏幕上列印一個#字元。本命令在發送和接收文件時都可以使用。
◆ftp中的本地命令
當您使用ftp時,字元「!」用於向本地機上的命令shell傳送一個命令。如果用戶處在ftp會話中,需要shell做某些事,就很有用。例如用戶要建立一個目錄來保存接收到的文件。如果輸入!mkdir new_dir,那麼Linux就在用戶當前的本地目錄中創建一個名為new_dir 的目錄。
這里Linux ftp命令就介紹到這里,應該足夠在Linux系統下使用ftp工具了。
2. Linux系統中wget的使用方法解析
wget是Linux系統中基於控制台的一個強大下載工具,支持HTTP和FTP協議,具有斷點續傳和代理伺服器等功能。以下是wget的使用方法解析:
一、啟動選項
二、日誌文件與輸入文件選項
三、下載選項
四、目錄選項
五、HTTP選項
六、FTP選項
七、遞歸下載選項
八、遞歸方式的允許與拒絕選項
以上是wget的主要使用方法,通過合理使用這些參數,可以大大提高下載效率和靈活性。
3. Linux系統下wget命令的使用教程
一、Linux wget簡介
wget是linux上的命令行的下載工具。這是一個GPL許可證下的自由軟體。Linux wget支持HTTP和FTP協議,支持代理伺服器和斷點續傳功能,能夠自動遞歸遠程主機的目錄,找到合乎條件的文件並將其下載到本地硬碟上;如果必要,Linux wget將恰當地轉換頁面中的超級連接以在本地生成可瀏覽的鏡像。由於沒有互動式界面,Linux wget可在後台運行,截獲並忽略HANGUP信號,因此在用戶推出登錄以後,仍可繼續運行。通常,Linux wget用於成批量地下載Internet網站上的文件,或製作遠程網站的鏡像。
二、實例
下載下載192.168.1.168首頁並且顯示下載信息Linux wget -d http://192.168.1.168下載192.168.1.168首頁並且不顯示任何信息wget -q http://192.168.1.168下載filelist.txt中所包含的鏈接的所有文件wget -i filelist.txt
下載到指定目錄wget -P/tmp ftp://user:passwd@url/file把文件file下載到/tmp目錄下。Linux wget是一個命令行的下載工具。對於我們這些 Linux 用戶來說,幾乎每天都在使用它。下面為大家介紹幾個有用的 Linux wget 小技巧,可以讓你更加高效而靈活的使用 Linux wget。
*
復制代碼代碼如下:$ wget -r -np -nd http://example.com/packages/這條命令可以下載 http://example.com 網站上 packages 目錄中的所有文件。其中,-np 的作用是不遍歷父目錄,-nd 表示不在本機重新創建目錄結構。*
復制代碼代碼如下:$ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/與上一條命令相似,但多加了一個 --accept=iso 選項,這指示Linux wget僅下載 i386 目錄中所有擴展名為 iso 的文件。你也可以指定多個擴展名,只需用逗號分隔即可。*
復制代碼代碼如下:$ wget -i filename.txt此命令常用於批量下載的情形,把所有需要下載文件的地址放到 filename.txt 中,然後 Linux wget就會自動為你下載所有文件了。*
復制代碼代碼如下:$ wget -c http://example.com/really-big-file.iso這里所指定的 -c 選項的作用為斷點續傳。*
復制代碼代碼如下:$ wget -m -k (-H) http://www.example.com/該命令可用來鏡像一個網站,Linux wget將對鏈接進行轉換。如果網站中的圖像是放在另外的站點,那麼可以使用 -H 選項。三、參數
代碼:
復制代碼代碼如下:$ wget --helpGNU Wget 1.9.1,非互動式的網路文件下載工具。用法:Linux wget[選項]... [URL]...長選項必須用的參數在使用短選項時也是必須的。啟動:
-V, --version 顯示 Wget 的版本並且退出。
-h, --help 列印此幫助。
-b, -background 啟動後進入後台操作。
-e, -execute=COMMAND 運行『.wgetrc』形式的命令。
日誌記錄及輸入文件:
-o, --output-file=文件 將日誌消息寫入到指定文件中。
-a, --append-output=文件 將日誌消息追加到指定文件的末端。
-d, --debug 列印調試輸出。
-q, --quiet 安靜模式(不輸出信息)。
-v, --verbose 詳細輸出模式(默認)。
-nv, --non-verbose 關閉詳細輸出模式,但不進入安靜模式。
-i, --input-file=文件 下載從指定文件中找到的 URL。
-F, --force-html 以 HTML 方式處理輸入文件。
-B, --base=URL 使用 -F -i 文件選項時,在相對鏈接前添加指定的 URL。
下載:
-t, --tries=次數 配置重試次數(0 表示無限)。
--retry-connrefused 即使拒絕連接也重試。
-O --output-document=文件 將數據寫入此文件中。
-nc, --no-clobber 不更改已經存在的文件,也不使用在文件名後添加 .#(# 為數字)的方法寫入新的文件。
-c, --continue 繼續接收已下載了一部分的文件。
--progress=方式 選擇下載進度的表示方式。
-N, --timestamping 除非遠程文件較新,否則不再取回。
-S, --server-response 顯示伺服器回應消息。
--spider 不下載任何數據。
-T, --timeout=秒數 配置讀取數據的超時時間 (秒數)。
-w, --wait=秒數 接收不同文件之間等待的秒數。
--waitretry=秒數 在每次重試之間稍等一段時間 (由 1 秒至指定的 秒數不等)。
--random-wait 接收不同文件之間稍等一段時間(由 0 秒至 2*WAIT 秒不等)。
-Y, --proxy=on/off 打開或關閉代理伺服器。
-Q, --quota=大小 配置接收數據的限額大小。
--bind-address=地址 使用本機的指定地址 (主機名稱或 IP) 進行連接。
--limit-rate=速率 限制下載的速率。
--dns-cache=off 禁止查找存於高速緩存中的 DNS。
--restrict-file-names=OS 限制文件名中的字元為指定的 OS (操作系統) 所允許的字元。
目錄:
-nd --no-directories 不創建目錄。
-x, --force-directories 強制創建目錄。
-nH, --no-host-directories 不創建含有遠程主機名稱的目錄。
-P, --directory-prefix=名稱 保存文件前先創建指定名稱的目錄。
--cut-dirs=數目 忽略遠程目錄中指定數目的目錄層。
HTTP 選項:
--http-user=用戶 配置 http 用戶名。
--http-passwd=密碼 配置 http 用戶密碼。
-C, --cache=on/off (不)使用伺服器中的高速緩存中的數據 (默認是使用的)。
-E, --html-extension 將所有 MIME 類型為 text/html 的文件都加上 .html 擴展文件名。
--ignore-length 忽略「Content-Length」文件頭欄位。
--header=字元串 在文件頭中添加指定字元串。
--proxy-user=用戶 配置代理伺服器用戶名。
--proxy-passwd=密碼 配置代理伺服器用戶密碼。
--referer=URL 在 HTTP 請求中包含「Referer:URL」頭。
-s, --save-headers 將 HTTP 頭存入文件。
-U, --user-agent=AGENT 標志為 AGENT 而不是 Wget/VERSION。
--no-http-keep-alive 禁用 HTTP keep-alive(持久性連接)。
--cookies=off 禁用 cookie。
--load-cookies=文件 會話開始前由指定文件載入 cookie。
--save-cookies=文件 會話結束後將 cookie 保存至指定文件。
--post-data=字元串 使用 POST 方法,發送指定字元串。
--post-file=文件 使用 POST 方法,發送指定文件中的內容。
HTTPS (SSL) 選項:
--sslcertfile=文件 可選的客戶段端證書。
--sslcertkey=密鑰文件 對此證書可選的「密鑰文件」。
--egd-file=文件 EGD socket 文件名。
--sslcadir=目錄 CA 散列表所在的目錄。
--sslcafile=文件 包含 CA 的文件。
--sslcerttype=0/1 Client-Cert 類型 0=PEM (默認) / 1=ASN1 (DER)
--sslcheckcert=0/1 根據提供的 CA 檢查伺服器的證書
--sslprotocol=0-3 選擇 SSL 協議;0=自動選擇,
1=SSLv2 2=SSLv3 3=TLSv1
FTP 選項:
-nr, --dont-remove-listing 不刪除「.listing」文件。
-g, --glob=on/off 設置是否展開有通配符的文件名。
--passive-ftp 使用「被動」傳輸模式。
--retr-symlinks 在遞歸模式中,下載鏈接所指示的文件(連至目錄則例外)。
遞歸下載:
-r, --recursive 遞歸下載。
-l, --level=數字 最大遞歸深度(inf 或 0 表示無限)。
--delete-after 刪除下載後的文件。
-k, --convert-links 將絕對鏈接轉換為相對鏈接。
-K, --backup-converted 轉換文件 X 前先將其備份為 X.orig。
-m, --mirror 等效於 -r -N -l inf -nr 的選項。
-p, --page-requisites 下載所有顯示完整網頁所需的文件,例如圖像。
--strict-comments 打開對 HTML 備注的嚴格(SGML)處理選項。
遞歸下載時有關接受/拒絕的選項:
-A, --accept=列表 接受的文件樣式列表,以逗號分隔。
-R, --reject=列表 排除的文件樣式列表,以逗號分隔。
-D, --domains=列表 接受的域列表,以逗號分隔。
--exclude-domains=列表 排除的域列表,以逗號分隔。
--follow-ftp 跟隨 HTML 文件中的 FTP 鏈接。
--follow-tags=列表 要跟隨的 HTML 標記,以逗號分隔。
-G, --ignore-tags=列表 要忽略的 HTML 標記,以逗號分隔。
-H, --span-hosts 遞歸時可進入其它主機。
-L, --relative 只跟隨相對鏈接。
-I, --include-directories=列表 要下載的目錄列表。
-X, --exclude-directories=列表 要排除的目錄列表。
-np, --no-parent 不搜索上層目錄。
四、實例:用Wget批量下載遠程FTP伺服器上的文件
昨天買了個VPS,把虛擬主機遷移到VPS了,遷移過程肯定是要轉移數據的。以前虛擬主機遷移數據的模式是非常低效率的,舊主機打包下載->新主機上傳再解壓縮,由於家庭網路帶寬非常低,而且ADSL的上行速率512kbps萬年不變,導致以前遷移網站絕對是體力活...
現在有了VPS,有了shell,這個過程就無比簡單了,藉助機房的大帶寬,直接機房對機房互傳文件看著簡直就是一種享受啊
好了,講一下方法:
1、舊虛擬主機打包備份整站 site.tar.gz
2、在VPS的shell中利用wget下載舊虛擬主機中的site.tar.gz,使用FTP協議
上面就是命令了,FTP用戶名密碼參數不解釋;
-r 可選,表示遞歸下載,如果直接下載整個目錄就需要該參數;
-m 表示鏡像,不解釋;
-nh表示不生成那一堆層級目錄,直接從當前目錄開始顯示,非常好的參數;
後面是ftp的地址,斜杠後的 * 表示下載該目錄下的所有文件,如果只是一個文件,直接輸入文件名即可。
五、Q&A
A.使用wget工具linux所以的主要版本都自帶了Linux wget這個下載工具.bash$ wget http://place.your.url/here它還能控制ftp來下載整個web站點的各級目錄,當然,如果你不小心,可能會把整個網站以及其他和他做鏈接的網站全部下載下來.bash$ wget -m http://target.web.site/subdirectory由於這個工具具有很強的下載能力,所以可以在伺服器上把它用作鏡像網站的工具.讓它按照」robots.txt」的規定來執行.有很多參數用來控制它如何正確地做鏡像,可以限制鏈接的類型和下載文件的類型等等.例如:只下載有聯系的鏈接並且忽略GIF圖片:
Linux wget也能夠實現斷點續傳(-c參數),當然,這種操作是需要遠程伺服器支持的.
如果你覺得下載時老是斷線會影響你辦公的話,你可以限制Linux wget重試的次數.
B.那對於代理服務該怎麼辦呢?可以使用http代理的參數或者在.wgetrc配置文件里指定一個如何通過代理去下載的途徑.但是有這么一個問題,如果通過代理來進行斷點續傳的話可能會有幾次失敗.如果有一次通過代理下載的過程發生中斷,那麼代理伺服器上緩存里保存是那個完整的文件拷貝. 所以當你用」wget -c」來下載剩餘部分的時候代理伺服器查看它的緩存,並錯誤地認為你已經下載了整個文件.於是就發出了錯誤的信號.這個時候你可以用添加一個特定的請求參數來促使代理伺服器清除他們的緩存:
這個」–header」參數能夠以各種數字,各種方式添加。通過它我們可以更改web伺服器或者代理伺服器的某些屬性。有些站點不提供外部連接的文件服務,只有通過同一個站點上其他的一些頁面時內容才會被提交。這個時候你可以用加上」Referer:」參數:bash$ wget –header=」Referer: http://coming.from.this/page」 http://surfing.to.this/page有些特殊的網站只支持某種特定的瀏覽器,這個時候可以用」User-Agent:」參數
復制代碼代碼如下:bash$ wget –header=」User-Agent: Mozilla/4.0 (compatible; MSIE 5.0;Windows NT; DigExt)」 http://msie.only.url/hereC.那我怎麼設定下載時間呢?
如果你需要在你的辦公電腦上通過和其他同事共享的一個連接來下載一些很大的文件,而且你希望你的同事不會因為網路速度的減慢而收到影響,那你就應該盡量避開高峰時段。當然,不需要在辦公室里等到所以人都走掉,也不需要在家裡用完晚飯後還惦記著要上網下載一次。用at來就可以很好的定製工作時間:bash$ at 23:00warning: commands will be executed using /bin/shat> wget http://place.your.url/hereat> press Ctrl-D這樣,我們設定了下載工作在晚上11點進行。為了使這個安排能夠正常進行,請確認atd這個後台程序正在運行。
D.下載要花很多時間?
當你需要下載大量的數據,而且你又沒有享有足夠的帶寬,這個時候你會經常發現在你安排的下載任務還沒有完成,一天的工作卻又要開始了。
作為一個好同事,你只能停掉了這些任務,而開始另外的工作。然後你又需要反復地重復使用」wget -c」來完成你的下載。這樣肯定太繁瑣了,所以最好是用crontab來自動執行。創建一個純文本文件,叫做」crontab.txt」,包含下面的內容:0 23 * * 1-5 wget -c -N http://place.your.url/here0 6 * * 1-5 killall wgetz這個crontab文件指定某些任務定期地執行。前五列聲明是什麼時候執行這個命令,而每行的剩餘部分則告訴crontab執行什麼內容。
前兩列指定了每天一到晚上11點就開始用Linux wget下載,一到早上6點就停止一切Linux wget下載。第三四列的*表示每個月的每一天都執行這個任務。第五列則指定了一個星期的哪幾天來執行這個程序。 –」1-5″表示從星期一到星期五。這樣在每個工作日的晚上11點,下載工作開始,到了上午的6點,任何的Linux wget任務就被停掉了。你可以用下面的命令來執行
Linux wget的這個」-N」參數將會檢查目標文件的時間戳,如果匹配了,下載程序就會停止,因為它說明整個文件已經下載完全了。用」crontab -r」可以刪除這個計劃安排。我已經多次採用這種方法,通過共享的電話撥號來下載過很多的ISO鏡像文件,還是比較實用的。
E.如何下載動態變化的網頁
有些網頁每天都要根據要求變化好幾次.所以從技術上講,目標不再是一個文件,它沒有文件長度.因此」-c」這個參數也就失去了意義.例如:一個php寫的並且經常變動的linux周末新聞網頁:
我辦公室里的網路條件經常很差,給我的下載帶了很大的麻煩,所以我寫了個簡單的腳本來檢測動態頁面是否已經完全更新了.
F.對於ssl和Cookies怎麼辦?
如果你要通過ssl來上網,那麼網站地址應該是以」https://」來開頭的.在這樣的情況下你就需要另外一種下載工具,叫做curl,它能夠很容易獲得.有些網站迫使網友在瀏覽的時候必須使用cookie.所以你必須從在網站上得到的那個 Cookie裡面得到」Cookie:」這個參數.這樣才能保證下載的參數正確.對於lynx和Mozilla的Cookie的文件格式,用下面的:
G.如何建立地址列表?
到現在為止我們下載的都是單個文件或者是整個網站.有的時候我們需要下載某個網頁上鏈接的大量文件,但沒有必要把它整個網站都鏡像下來.比如說我們想從一個依次排列的100首歌裡面下載前20首.注意,這里」–accept」和」–reject」參數是不會起作用的, 因為他們只對文件操作起作用.所以一定要用」lynx -mp」參數來代替.
H.擴大使用的帶寬
如果你選擇下載一個受帶寬限制的文件,那你的下載會因為伺服器端的限制而變得很慢.下面這個技巧會大大縮短下載的過程.但這個技巧需要你使用curl並且遠程伺服器有多個鏡像可以供你下載.例如,假設你想從下面的三個地址下載Mandrake 8.0: