2015-05-23 131 views
13

我嘗試「-N」和「--no-撞」,但我得到的是檢索與數現有example.exe的新副本的一些使用該synax「example.exe.1」添加的唯一結果。這不是我想要的。我只需要下載並覆蓋文件example.exe,在我已經保存了example.com副本的同一個文件夾中,而沒有那個wget驗證我的文件是老的還是新的尊重example.exe文件已經存在於我的下載文件夾中。你認爲我是可能的,或者我需要創建一個腳本,刪除example.exe文件或可能會改變他的修改日期等?如何強制wget覆蓋現有文件忽略時間戳?

回答

18

如果使用-O選項指定輸出文件,將覆蓋任何現有的文件。

例如:

wget -O index.html bbc.co.uk 

多次運行將保持過書面方式的index.html。

+0

下載文件時(包括第一次),它也會觸及文件,所以文件的原始時間戳不會保留,因爲它不使用「-O」開關。 – Synetech

9

wget不允許覆蓋現有文件,除非您使用選項-O在命令行上明確命名輸出文件。

我有點懶,我不想當它已經從下載的文件中已知的命令行中輸入輸出文件名。因此,我使用這樣的捲曲:

curl -O http://ftp.vim.org/vim/runtime/spell/fr.utf-8.spl 

從不安全的站點下載像這樣的文件時請小心。上述命令將寫入一個名爲連接網站的文件,希望將其命名(儘管在當前目錄中)。最終名稱可能通過重定向和php腳本隱藏,或者在URL中被混淆。您最終可能會覆蓋您不想覆蓋的文件。

如果您在使用curl這種方式後發現當前目錄中名爲ls或任何其他誘人名稱的文件,請勿執行下載的文件。它可能是一個從惡意或損壞的網站下載的木馬!

+2

所以基本上,不要使用這種方法 –

+0

,除非你信任該網站。就像他說的。 – gbtimmon

6
wget --backups=1 google.com 

重命名文件,.1後綴的新文件寫入到目標文件名。

被要求不完全是,但可能會在某些情況下派上用場。

6

-c--continue

manual

如果您使用非空文件「-c」和服務器不支持 繼續下載,Wget的會重新啓動下載從無到有, 覆蓋現有文件完全

+2

服務器通常支持繼續下載。 – teknopaul

2

我喜歡-c選項。我從手冊頁和網頁開始,但我已經搜索了幾次。就像如果你正在中繼一個網絡攝像頭,所以圖像需要總是被命名爲image.jpg。似乎應該在手冊頁中更清楚。

我已經在我的wgetrc文件一直使用這個的一對夫婦幾年來在後臺下載,有時合併的事情「漲停率=」

while true 
do 
wget -c -i url.txt && break 
echo "Restarting wget" 
sleep 2 
done 

營造一些文件名爲url.txt和將文件的URL粘貼到其中。在你的路徑中設置這個腳本或者作爲一個別名並運行它。它不斷重試下載,直到沒有錯誤。有時最後它進入一個循環顯示

416 Requested Range Not Satisfiable 
The file is already fully retrieved; nothing to do. 

但這是無害的,只是ctrl-c它。我認爲即使wget耗盡重試或連接暫時消失,它仍然會收到我想要的文件。我一次下載了幾天的東西。撥號時的CD圖像,是的,始終與wget。

0

我的用例涉及兩個不同的URL,有時第二個不存在,但如果它存在,我希望它覆蓋第一個文件。

使用wget -O的問題是,當第二個文件不存在時,它將用一個BLANK文件覆蓋第一個文件。

所以我能找到的唯一方法就是使用if語句:

--spider檢查文件是否存在,如果它確實

--quiet失敗悄無聲息,沒有輸出

返回0

-nv很安靜,但仍報告錯誤

wget -nv https://example.com/files/file01.png -O file01.png 
# quietly check if a different version exists 
wget --quiet --spider https://example.com/custom-files/file01.png 
if [ $? -eq 0 ] ; then  
    # A different version exists, so download and overwrite the first 
    wget -nv https://example.com/custom-files/file01.png -O file01.png 
fi 

這是冗長的,但我認爲有必要。我希望這對某人有幫助。