
我有一個 bash 腳本,它啟動一系列 wget 命令並記錄輸出。我使用以下選項:
wget --no-verbose --page-requisites --adjust-extension --convert-links --backup-converted --timestamping --wait=1 --random-wait --append-output="$logfile" --recursive --level=2 http://example.com
日誌應以以下內容結尾:
Terminé — 2014-10-09 18:06:40 —
Temps total effectif : 1m 7s
Téléchargés : 11 fichiers, 79K en 0,06s (1,22 MB/s)
但有時沒有這樣的總結,我看到的只是發生的錯誤:
http://example.com/robots.txt:
2014-10-09 18:06:41 erreur 404 : Ce fichier n'existe pas (404).
http://example.com/index.html:
2014-10-09 18:08:27 erreur 404 : Ce fichier n'existe pas (404).
http://example.com/folder1/folder2/default.asp.html:
2014-10-09 18:08:31 erreur 404 : Ce fichier n'existe pas (404).
http://example.com/folder1/index.html:
2014-10-09 18:08:56 erreur 404 : Ce fichier n'existe pas (404).
http://example.com/folder1/folder2/folder3/"../images/bullet.gif":
2014-10-09 18:09:28 erreur 403 : Action interdite.
為什麼 wget 不顯示摘要?是因為沒有下載新文件,還是因為出現了很多伺服器錯誤(404、403)?
答案1
是因為沒有下載新檔案嗎,[...]?
是的。就是這樣。如果下載了零字節,則不會有摘要。這是因為下面的 if 語句的後半部:“total_downloaded_bytes != 0”
來源自wget Git 倉庫:
if ((opt.recursive || opt.page_requisites
|| nurl > 1
|| (opt.input_filename && total_downloaded_bytes != 0))
&&
total_downloaded_bytes != 0)
如何強制 wget 輸出摘要?
似乎沒有辦法強制這樣做。我可以想到這些替代方案:
- 從原始程式碼中刪除這兩行並重新編譯您自己的私有版本。
- 提交明確選項的功能請求wget 錯誤追蹤器。
- 每次下載一個 1 位元組的虛擬檔案。這應該會強制顯示摘要。