2012-10-03 87 views
13

我只想要文件夾結構,但我無法弄清楚如何與wget。相反,我用這:wget拒絕仍然下載文件

wget的-R PDF,CSS,GIF,TXT,PNG -np -r http://example.com

哪些應該拒絕-R後所有的文件,但在我看來, wget仍然會下載該文件,然後將其刪除。

有沒有更好的方法來獲取文件夾結構?

TTP請求中發送,等待響應... 200 OK長度:136796(134K) [應用程序/ x-下載]保存到: 「example.com/file.pdf」

100 %[=====================================>] 0.2秒內136,796 853K/s

2012年10月3日3點51分41秒(853字節/秒) - 「example.com/file.pdf」 保存[一十三萬六千七百九十六分之十三萬六千七百九十六]

卸下 example.com/file.pdf,因爲它應該被拒絕。

如果有人想知道這是一個客戶,他們可以告訴我這個結構,但這是一個麻煩,因爲他們的IT人必須這樣做,所以我想自己做。

+0

可能是你應該在http想問: //unix.stackexchange.com/ –

+0

從客戶那裏獲得結構可能會更好。 'wget',尤其是'-np'選項,可能會漏掉索引文件不直接或間接鏈接的目錄。 –

+1

可能的重複項:http:// stackoverflow。com/questions/10712344/mirror-http-website-excluded-certain-files –

回答

17

這似乎是wget設計的工作原理。在執行遞歸下載時,與拒絕列表匹配的非葉文件仍會下載,以便可以收集鏈接,然後刪除它們。

從在代碼註釋(recur.c):指定

要麼--delete-後,或我們裝這個 否則拒絕(例如,通過-R)HTML文件只是讓我們 能收穫其超鏈接 - 無論如何,刪除 的本地文件。

我們已經有一個運行在這過去的項目中,我們不得不鏡像一個認證的站點和wget保持甚至打到註銷網頁時,它是爲了拒絕那些網址。我們找不到任何選項來更改wget的行爲。

我們結束的解決方案是download,破解並構建我們自己的版本wget。有可能是一個更優雅的方式來這一點,但我們使用了快速修復了以下規則添加到download_child_p() routine結束(修改,以符合您的要求):

/* Extra rules */ 
    if (match_tail(url, ".pdf", 0)) goto out; 
    if (match_tail(url, ".css", 0)) goto out; 
    if (match_tail(url, ".gif", 0)) goto out; 
    if (match_tail(url, ".txt", 0)) goto out; 
    if (match_tail(url, ".png", 0)) goto out; 
    /* --- end extra rules --- */ 

    /* The URL has passed all the tests. It can be placed in the 
    download queue. */ 
    DEBUGP (("Decided to load it.\n")); 

    return 1; 

out: 
    DEBUGP (("Decided NOT to load it.\n")); 

    return 0; 
} 
+3

哇!他們應該讓拒絕功能像那樣工作。但我意識到wget本來就是要完成一項具體任務。謝謝。 –

+0

不客氣邁克爾。 –

+0

Upvoting這個答案,因爲它是一個很棒的DIY解決方案,但我仍然失望沒有更好的辦法。 – taranaki