導航:首頁 > 程序命令 > linux命令如何重試幾次

linux命令如何重試幾次

發布時間:2025-06-16 08:03:48

linux系統中的curl命令使用教程

命令:curl
在Linux中curl是一個利用URL規則在命令行下工作的文件傳輸工具,可以說是一款很強大的http命令行工具。它支持文件的上傳和下載,是綜合傳輸工具,但按傳統,習慣稱url為下載工具。
語法:# curl [option] [url]
常見參數:
-A/--user-agent 設置用戶代理發送給伺服器
-b/--cookie
-c/--cookie-jar 操作結束後把cookie寫入到這個文件中
-C/--continue-at 斷點續轉
-D/--mp-header 把header信息寫入到該文件中
-e/--referer 來源網址
-f/--fail 連接失敗時不顯示http錯誤
-o/--output 把輸出寫到該文件中
-O/--remote-name 把輸出寫到該文件中,保留遠程文件的文件名
-r/--range 檢索來自HTTP/1.1或FTP伺服器位元組范圍
-s/--silent 靜音模式。不輸出任何東西
-T/--upload-file 上傳文件
-u/--user
-w/--write-out [format] 什麼輸出完成後
-x/--proxy
-#/--progress-bar 進度條顯示當前的傳送狀態
例子:
1、基本用法
代碼如下:
# curl http://www.linux.com
執行後,www.linux.com 的html就會顯示在屏幕上了
Ps:由於安裝linux的時候很多時候是沒有安裝桌面的,也意味著沒有瀏覽器,因此這個方法也經常用於測試一台伺服器是否可以到達一個網站
2、保存訪問的網頁
2.1:使用linux的重定向功能保存
代碼如下:
# curl http://www.linux.com linux.html
2.2:可以使用curl的內置option:-o(小寫)保存網頁
代碼如下:
$ curl -o linux.html http://www.linux.com
執行完成後會顯示如下界面,顯示100%則表示保存成功
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 79684 0 79684 0 0 3437k 0 --:--:-- --:--:-- --:--:-- 7781k
2.3:可以使用curl的內置option:-O(大寫)保存網頁中的文件
要注意這里後面的url要具體到某個文件,不然抓不下來
代碼如下:
# curl -O http://www.linux.com/hello.sh
3、測試網頁返回值
代碼如下:
# curl -o /dev/null -s -w %{http_code} www.linux.com
Ps:在腳本中,這是很常見的測試網站是否正常的用法
4、指定proxy伺服器以及其埠
很多時候上網需要用到代理伺服器(比如是使用代理伺服器上網或者因為使用curl別人網站而被別人屏蔽IP地址的時候),幸運的是curl通過使用內置option:-x來支持設置代理
代碼如下:
# curl -x 192.168.100.100:1080 http://www.linux.com
5、cookie
有些網站是使用cookie來記錄session信息。對於chrome這樣的瀏覽器,可以輕易處理cookie信息,但在curl中只要增加相關參數也是可以很容易的處理cookie
5.1:保存http的response裡面的cookie信息。內置option:-c(小寫)
代碼如下:
# curl -c cookiec.txt http://www.linux.com
執行後cookie信息就被存到了cookiec.txt裡面了
5.2:保存http的response裡面的header信息。內置option: -D
代碼如下:
# curl -D cookied.txt http://www.linux.com
執行後cookie信息就被存到了cookied.txt裡面了
注意:-c(小寫)產生的cookie和-D裡面的cookie是不一樣的。
5.3:使用cookie
很多網站都是通過監視你的cookie信息來判斷你是否按規矩訪問他們的網站的,因此我們需要使用保存的cookie信息。內置option: -b
代碼如下:
# curl -b cookiec.txt http://www.linux.com
6、模仿瀏覽器
有些網站需要使用特定的瀏覽器去訪問他們,有些還需要使用某些特定的版本。curl內置option:-A可以讓我們指定瀏覽器去訪問網站
代碼如下:
# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com
這樣伺服器端就會認為是使用IE8.0去訪問的
7、偽造referer(盜鏈)
很多伺服器會檢查http訪問的referer從而來控制訪問。比如:你是先訪問首頁,然後再訪問首頁中的郵箱頁面,這里訪問郵箱的referer地址就是訪問首頁成功後的頁面地址,如果伺服器發現對郵箱頁面訪問的referer地址不是首頁的地址,就斷定那是個盜連了
curl中內置option:-e可以讓我們設定referer
代碼如下:
# curl -e "www.linux.com" http://mail.linux.com
這樣就會讓伺服器其以為你是從www.linux.com點擊某個鏈接過來的
8、下載文件
8.1:利用curl下載文件。
代碼如下:
#使用內置option:-o(小寫)
# curl -o dodo1.jpg http:www.linux.com/dodo1.JPG
#使用內置option:-O(大寫)
# curl -O http://www.linux.com/dodo1.JPG
這樣就會以伺服器上的名稱保存文件到本地
8.2:循環下載
有時候下載圖片可以能是前面的部分名稱是一樣的,就最後的尾椎名不一樣
代碼如下:
# curl -O http://www.linux.com/dodo[1-5].JPG
這樣就會把dodo1,dodo2,dodo3,dodo4,dodo5全部保存下來
8.3:下載重命名
代碼如下:
# curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG
由於下載的hello與bb中的文件名都是dodo1,dodo2,dodo3,dodo4,dodo5。因此第二次下載的會把第一次下載的覆蓋,這樣就需要對文件進行重命名。
代碼如下:
# curl -o #1_#2.JPG http://www.linux.com/{hello,bb}/dodo[1-5].JPG
這樣在hello/dodo1.JPG的文件下載下來就會變成hello_dodo1.JPG,其他文件依此類推,從而有效的避免了文件被覆蓋
8.4:分塊下載
有時候下載的東西會比較大,這個時候我們可以分段下載。使用內置option:-r
復制代碼
代碼如下:
# curl -r 0-100 -o dodo1_part1.JPG http://www.linux.com/dodo1.JPG
# curl -r 100-200 -o dodo1_part2.JPG http://www.linux.com/dodo1.JPG
# curl -r 200- -o dodo1_part3.JPG http://www.linux.com/dodo1.JPG
# cat dodo1_part* dodo1.JPG
這樣就可以查看dodo1.JPG的內容了
8.5:通過ftp下載文件
curl可以通過ftp下載文件,curl提供兩種從ftp中下載的語法
代碼如下:
# curl -O -u 用戶名:密碼 ftp://www.linux.com/dodo1.JPG
# curl -O ftp://用戶名:密碼@www.linux.com/dodo1.JPG
8.6:顯示下載進度條
代碼如下:
# curl -# -O http://www.linux.com/dodo1.JPG
8.7:不會顯示下載進度信息
代碼如下:
# curl -s -O http://www.linux.com/dodo1.JPG
9、斷點續傳
在windows中,我們可以使用迅雷這樣的軟體進行斷點續傳。curl可以通過內置option:-C同樣可以達到相同的效果
如果在下載dodo1.JPG的過程中突然掉線了,可以使用以下的方式續傳
復制代碼
代碼如下:
# curl -C -O http://www.linux.com/dodo1.JPG
10、上傳文件
curl不僅僅可以下載文件,還可以上傳文件。通過內置option:-T來實現
復制代碼
代碼如下:
# curl -T dodo1.JPG -u 用戶名:密碼 ftp://www.linux.com/img/
這樣就向ftp伺服器上傳了文件dodo1.JPG
11、顯示抓取錯誤
復制代碼
代碼如下:
# curl -f http://www.linux.com/error
其他參數(此處翻譯為轉載):
-a/--append 上傳文件時,附加到目標文件
--anyauth 可以使用「任何」身份驗證方法
--basic 使用HTTP基本驗證
-B/--use-ascii 使用ASCII文本傳輸
-d/--data HTTP POST方式傳送數據
--data-ascii 以ascii的方式post數據
--data-binary 以二進制的方式post數據
--negotiate 使用HTTP身份驗證
--digest 使用數字身份驗證
--disable-eprt 禁止使用EPRT或LPRT
--disable-epsv 禁止使用EPSV
--egd-file 為隨機數據(SSL)設置EGD socket路徑
--tcp-nodelay 使用TCP_NODELAY選項
-E/--cert
--cert-type 證書文件類型 (DER/PEM/ENG) (SSL)
--key 私鑰文件名 (SSL)
--key-type 私鑰文件類型 (DER/PEM/ENG) (SSL)
--pass 私鑰密碼 (SSL)
--engine 加密引擎使用 (SSL). "--engine list" for list
--cacert CA證書 (SSL)
--capath CA目 (made using c_rehash) to verify peer against (SSL)
--ciphers SSL密碼
--compressed 要求返回是壓縮的形勢 (using deflate or gzip)
--connect-timeout 設置最大請求時間
--create-dirs 建立本地目錄的目錄層次結構
--crlf 上傳是把LF轉變成CRLF
--ftp-create-dirs 如果遠程目錄不存在,創建遠程目錄
--ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
--ftp-pasv 使用 PASV/EPSV 代替埠
--ftp-skip-pasv-ip 使用PASV的時候,忽略該IP地址
--ftp-ssl 嘗試用 SSL/TLS 來進行ftp數據傳輸
--ftp-ssl-reqd 要求用 SSL/TLS 來進行ftp數據傳輸
-F/--form
-form-string
-g/--globoff 禁用網址序列和范圍使用{}和[]
-G/--get 以get的方式來發送數據
-h/--help 幫助
-H/--header 自定義頭信息傳遞給伺服器
--ignore-content-length 忽略的HTTP頭信息的長度
-i/--include 輸出時包括protocol頭信息
-I/--head 只顯示文檔信息
-j/--junk-session-cookies 讀取文件時忽略session cookie
--interface 使用指定網路介面/地址
--krb4 使用指定安全級別的krb4
-k/--insecure 允許不使用證書到SSL站點
-K/--config 指定的配置文件讀取
-l/--list-only 列出ftp目錄下的文件名稱
--limit-rate 設置傳輸速度
--local-port 強制使用本地埠號
-m/--max-time 設置最大傳輸時間
--max-redirs 設置最大讀取的目錄數
--max-filesize 設置最大下載的文件總量
-M/--manual 顯示全手動
-n/--netrc 從netrc文件中讀取用戶名和密碼
--netrc-optional 使用 .netrc 或者 URL來覆蓋-n
--ntlm 使用 HTTP NTLM 身份驗證
-N/--no-buffer 禁用緩沖輸出
-p/--proxytunnel 使用HTTP代理
--proxy-anyauth 選擇任一代理身份驗證方法
--proxy-basic 在代理上使用基本身份驗證
--proxy-digest 在代理上使用數字身份驗證
--proxy-ntlm 在代理上使用ntlm身份驗證
-P/--ftp-port
   使用埠地址,而不是使用PASV

-Q/--quote 文件傳輸前,發送命令到伺服器
--range-file 讀取(SSL)的隨機文件
-R/--remote-time 在本地生成文件時,保留遠程文件時間
--retry 傳輸出現問題時,重試的次數
--retry-delay 傳輸出現問題時,設置重試間隔時間
--retry-max-time 傳輸出現問題時,設置最大重試時間
-S/--show-error 顯示錯誤
--socks4
--socks5
-t/--telnet-option
--trace 對指定文件進行debug
--trace-ascii Like --跟蹤但沒有hex輸出
--trace-time 跟蹤/詳細輸出時,添加時間戳
--url Spet URL to work with
-U/--proxy-user
-V/--version 顯示版本信息
-X/--request 指定什麼命令
-y/--speed-time 放棄限速所要的時間。默認為30
-Y/--speed-limit 停止傳輸速度的限制,速度時間'秒
-z/--time-cond 傳送時間設置
-0/--http1.0 使用HTTP 1.0
-1/--tlsv1 使用TLSv1(SSL)
-2/--sslv2 使用SSLv2的(SSL)
-3/--sslv3 使用的SSLv3(SSL)
--3p-quote like -Q for the source URL for 3rd party transfer
--3p-url 使用url,進行第三方傳送
--3p-user 使用用戶名和密碼,進行第三方傳送
-4/--ipv4 使用IP4
-6/--ipv6 使用IP6
使用curl命令獲取文件下載速度
使用curl可以下載網路內容,那如何獲取curl下載時的下載速度呢,使用下面的命令即可:
復制代碼
代碼如下:
# curl -Lo /dev/null -skw "%{speed_download}n" http://mirrors.163.com/ubuntu/ls-lR.gz
226493.000
當然,還可以獲取連接時間、重定向時間等更多的數據:
復制代碼
代碼如下:
# curl -Lo /dev/null -skw "time_connect: %{time_connect} sntime_namelookup: %{time_namelookup} sntime_pretransfer: %{time_pretransfer} sntime_starttransfer: %{time_starttransfer} sntime_redirect: %{time_redirect} snspeed_download: %{speed_download} B/sntime_total: %{time_total} snn" http://www.sina.com
time_connect: 0.154 s
time_namelookup: 0.150 s
time_pretransfer: 0.154 s
time_starttransfer: 0.163 s
time_redirect: 0.157 s
speed_download: 324679.000 B/s
time_total: 1.692 s

Ⅱ Linux系統中wget的使用方法解析

wget是Linux系統中基於控制台的一個強大下載工具,支持HTTP和FTP協議,具有斷點續傳和代理伺服器等功能。以下是wget的使用方法解析:

一、啟動選項

二、日誌文件與輸入文件選項

三、下載選項

四、目錄選項

五、HTTP選項

六、FTP選項

七、遞歸下載選項

八、遞歸方式的允許與拒絕選項

以上是wget的主要使用方法,通過合理使用這些參數,可以大大提高下載效率和靈活性。

Ⅲ 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協議

復制代碼代碼如下:
wget --ftp-user=username --ftp-password=password -m -nh ftp://xxx.xxx.xxx.xxx/xxx/xxx/site.tar.gz
wget --ftp-user=username --ftp-password=password -r -m -nh ftp://xxx.xxx.xxx.xxx/xxx/xxx/*

上面就是命令了,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圖片:

復制代碼代碼如下:bash$ wget -m -L –reject=gif http://target.web.site/subdirectory

Linux wget也能夠實現斷點續傳(-c參數),當然,這種操作是需要遠程伺服器支持的.

復制代碼代碼如下:bash$ wget -c http://the.url.of/incomplete/file可以把斷點續傳和鏡像功能結合起來,這樣可以在以前斷過多次的情況下繼續鏡像一個有大量選擇性文件的站點.如何自動實現這個目的我們在後面會討論得更多.

如果你覺得下載時老是斷線會影響你辦公的話,你可以限制Linux wget重試的次數.

復制代碼代碼如下:bash$ wget -t 5 http://place.your.url/here這樣重試五次後就放棄了.用」-t inf」參數表示永遠不放棄.不停地重試.

B.那對於代理服務該怎麼辦呢?可以使用http代理的參數或者在.wgetrc配置文件里指定一個如何通過代理去下載的途徑.但是有這么一個問題,如果通過代理來進行斷點續傳的話可能會有幾次失敗.如果有一次通過代理下載的過程發生中斷,那麼代理伺服器上緩存里保存是那個完整的文件拷貝. 所以當你用」wget -c」來下載剩餘部分的時候代理伺服器查看它的緩存,並錯誤地認為你已經下載了整個文件.於是就發出了錯誤的信號.這個時候你可以用添加一個特定的請求參數來促使代理伺服器清除他們的緩存:

復制代碼代碼如下:bash$ wget -c –header=」Pragma: no-cache」 http://place.your.url/here

這個」–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/here

C.那我怎麼設定下載時間呢?
如果你需要在你的辦公電腦上通過和其他同事共享的一個連接來下載一些很大的文件,而且你希望你的同事不會因為網路速度的減慢而收到影響,那你就應該盡量避開高峰時段。當然,不需要在辦公室里等到所以人都走掉,也不需要在家裡用完晚飯後還惦記著要上網下載一次。用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任務就被停掉了。你可以用下面的命令來執行

復制代碼代碼如下:crontab:bash$ crontab crontab.txt

Linux wget的這個」-N」參數將會檢查目標文件的時間戳,如果匹配了,下載程序就會停止,因為它說明整個文件已經下載完全了。用」crontab -r」可以刪除這個計劃安排。我已經多次採用這種方法,通過共享的電話撥號來下載過很多的ISO鏡像文件,還是比較實用的。

E.如何下載動態變化的網頁
有些網頁每天都要根據要求變化好幾次.所以從技術上講,目標不再是一個文件,它沒有文件長度.因此」-c」這個參數也就失去了意義.例如:一個php寫的並且經常變動的linux周末新聞網頁:

復制代碼代碼如下:bash$ wget http://lwn.net/bigpage.php3

我辦公室里的網路條件經常很差,給我的下載帶了很大的麻煩,所以我寫了個簡單的腳本來檢測動態頁面是否已經完全更新了.

復制代碼代碼如下:
#!/bin/bash
#create it if absent
touch bigpage.php3
#check if we got the whole thing
while ! grep -qi bigpage.php3
do
rm -f bigpage.php3
#download LWN in one big page
wget http://lwn.net/bigpage.php3
done
這個腳本能夠保證持續的下載該網頁,直到網頁裡面出現了" ",這就表示該文件已經完全更新了.

F.對於ssl和Cookies怎麼辦?
如果你要通過ssl來上網,那麼網站地址應該是以」https://」來開頭的.在這樣的情況下你就需要另外一種下載工具,叫做curl,它能夠很容易獲得.有些網站迫使網友在瀏覽的時候必須使用cookie.所以你必須從在網站上得到的那個 Cookie裡面得到」Cookie:」這個參數.這樣才能保證下載的參數正確.對於lynx和Mozilla的Cookie的文件格式,用下面的:

復制代碼代碼如下:bash$ cookie=$( grep nytimes ~/.lynx_cookies |awk {printf(」%s=%s;」,$6,$7)} )就可以構造一個請求Cookie來下載http://www.nytimes.com上的內容.當然,你要已經用這個瀏覽器在該網站上完成注冊.w3m使用了一種不同的,更小巧的Cookie文件格式:
復制代碼代碼如下:bash$ cookie=$( grep nytimes ~/.w3m/cookie |awk {printf(」%s=%s;」,$2,$3)} )
現在就可以用這種方法來下載了:
復制代碼代碼如下:bash$ wget –header=」Cookie: $cookie」 http://www.nytimes.com/reuters/technology/tech-tech-supercomput.html
或者用curl工具:
復制代碼代碼如下:bash$ curl -v -b $cookie -o supercomp.html http://www.nytimes.com/reuters/technology/tech-tech-supercomput.htm

G.如何建立地址列表?
到現在為止我們下載的都是單個文件或者是整個網站.有的時候我們需要下載某個網頁上鏈接的大量文件,但沒有必要把它整個網站都鏡像下來.比如說我們想從一個依次排列的100首歌裡面下載前20首.注意,這里」–accept」和」–reject」參數是不會起作用的, 因為他們只對文件操作起作用.所以一定要用」lynx -mp」參數來代替.

復制代碼代碼如下:bash$ lynx -mp ftp://ftp.ssc.com/pub/lg/ |grep gz$ |tail -10 |awk {print $2} > urllist.txt
lynx的輸出結果可以被各種GNU文本處理工具過慮.在上面的例子里,我們的鏈接地址是以」gz」結尾的,並且把最後10個文件地址放到urllist.txt文件里.然後我們可以寫一個簡單的bash腳本來自動下載這個文件里的目標文件:

復制代碼代碼如下:
bash$ for x in $(cat urllist.txt)
> do
> wget $x
> done
這樣我們就能夠成功下載Linux Gazette網站(ftp://ftp.ssc.com/pub/lg/)上的最新10個論題.

H.擴大使用的帶寬
如果你選擇下載一個受帶寬限制的文件,那你的下載會因為伺服器端的限制而變得很慢.下面這個技巧會大大縮短下載的過程.但這個技巧需要你使用curl並且遠程伺服器有多個鏡像可以供你下載.例如,假設你想從下面的三個地址下載Mandrake 8.0:

復制代碼代碼如下:
url1=http://ftp.eecs.umich.e/pub/linux/mandrake/iso/Mandrake80-inst.iso
url2=http://ftp.rpmfind.net/linux/Mandrake/iso/Mandrake80-inst.iso
url3=http://ftp.wayne.e/linux/mandrake/iso/Mandrake80-inst.iso
這個文件的長度是677281792個位元組,所以用curl程序加」–range」參數來建立三個同時進行的下載:

復制代碼代碼如下:
bash$ curl -r 0-199999999 -o mdk-iso.part1 $url1 &
bash$ curl -r 200000000-399999999 -o mdk-iso.part2 $url2 &
bash$ curl -r 400000000- -o mdk-iso.part3 $url3 &
這樣就創建了三個後台進程.每個進程從不同的伺服器傳輸這個ISO文件的不同部分.這個」-r」參數指定目標文件的位元組范圍.當這三個
進程結束後,用一個簡單的cat命令來把這三個文件銜接起來– cat mdk-iso.part? > mdk-80.iso.(強烈建議在刻盤之前先檢查md5)
你也可以用」–verbose」參數來使每個curl進程都有自己的窗口來顯示傳輸的過程.

Ⅳ Linux下wget命令詳解

Linux系統中,wget命令是一個強大的命令行工具,專為從Web獲取文件而設計,支持HTTP、HTTPS和FTP協議。它的功能豐富,包括下載單個或多個文件、後台下載、斷點續傳,以及對下載速度、目錄、模擬瀏覽器和重試次數的控制等。下面來逐一了解這些常用選項。

下載文件時,使用-wget [選項] url,例如下載redis的tar.gz文件,會實時顯示下載進度和文件信息。通過-O選項,可以指定下載後文件的名稱,如wget -O custom_name url。

-P選項允許你將文件下載到指定的目錄,如wget -P /usr/software url,這樣文件會直接保存在指定路徑。

如果你的下載中斷,可以使用-c選項恢復下載,讓下載從上次斷點繼續,避免從頭開始。另外,-b選項可以實現下載過程的後台運行,便於你進行其他操作。

下載多個文件時,可以創建包含所有URL的文本文件,然後使用-i選項指定該文件。同時,--limit-rate選項可用於設置下載速度,以避免帶寬佔用過多。

如果遇到伺服器許可權問題,可以使用-U選項模擬瀏覽器下載,如wget -U 'Mozilla/5.0' url。對於網路不穩定或大文件下載可能失敗的情況,-tries選項可以增加重試次數,比如wget --tries 50 url。

對於受密碼保護的FTP下載,需要使用如wget -u username -p password ftp_url的格式。wget的強大功能遠不止這些,靈活的選項讓它在各種下載場景下都能得心應手。

閱讀全文

與linux命令如何重試幾次相關的資料

熱點內容
為什麼超凡先鋒連接不上伺服器 瀏覽:22
單片機c語言範例 瀏覽:359
sql如何連接遠程資料庫伺服器 瀏覽:822
iosphp環境搭建 瀏覽:576
文件夾隱藏的東西在哪 瀏覽:187
用python寫建黨100周年 瀏覽:775
日本購物app怎麼樣 瀏覽:410
xcode設置編譯線程 瀏覽:432
timemachinelinux 瀏覽:238
老闆為什麼裁掉35歲程序員 瀏覽:149
androidassets絕對路徑 瀏覽:86
如何查看個稅伺服器埠 瀏覽:751
車輛解壓個人辦理收費多少 瀏覽:672
奧迪ea888壓縮比 瀏覽:690
java上標 瀏覽:426
買了個騰訊雲伺服器怎麼弄 瀏覽:187
科魯茲壓縮機壞了 瀏覽:174
php取昨天日期 瀏覽:43
掃描硬碟的命令 瀏覽:205
科目一什麼app預約 瀏覽:734