2013-09-22 155 views
5

我試圖用wget下載不同本地文件下的文件只能在服務器上的文件較新時下載。wget ::重命名下載的文件,只下載更新的文件

我想我唯一能做的就是用的wget-O選項,以便能夠選擇下載的文件的名稱,如:

wget http://example.com/weird-name -O local-name 

結合起來,與該-N選項除非服務器上的時間戳較新,否則不會下載任何內容。在下面的評論中解釋的原因,wget拒絕兩個標誌結合:在簡潔的變通

WARNING: timestamping does nothing in combination with -O. See the manual 
for details. 

任何想法?

+1

你的目標是什麼? man wget解釋了爲什麼將-N與-O混合在一起毫無意義,因爲:-O的意思並不是簡單地「使用名稱文件而不是URL中的名稱」;相反,它類似於shell重定向。總之,你的輸出文件將永遠比在服務器中更新,並且永遠不會下載任何東西。 –

+1

我想實際的問題是「在wget/bash中重命名下載文件的習慣用法**和**只在服務器上更新時才下載它們」 - 我已將這個問題改寫爲明確。 –

+0

@ecelis如果我找到你並且'man wget'說得對,那意味着'-O'文件在你運行'wget'的時刻總是被重寫/截斷,所以它的時間戳總是NOW,在這種情況下下載從未觸發。對? –

回答

2

下載它,然後創建一個鏈接

wget -N example.com/weird-name 
ln weird-name local-name 

之後,你可以運行wget -N,它會按預期工作:

  • 只下載,如果新
  • 如果一個新文件被下載它將可以從任何名稱訪問,不需要花費額外的驅動器空間
+0

這可以工作,除非您使用'-O'的原因是因爲您正在從多個源下載相同的文件到相同的目錄中。例如,如果您正在下載多個robots.txt文件。 –

1

如果使用其他工具,可以在你的情況,我建議使用免費的,開源的lwp-mirror

lwp-mirror [-options] <url> <file> 

它的工作原理就像你願意,沒有變通方法。

此命令由Ubuntu和Debian等地的libwww-perl軟件包提供。

請注意lwp-mirror不支持所有的wget的其他功能。例如,它不允許您爲wget這樣的請求設置用戶代理。