完成一定百分比後透過附加方式下載

完成一定百分比後透過附加方式下載

我總是用來wget -c下載一個文件,該文件可以透過在需要時從最後一個下載位置附加來下載。

下載一個檔案30%。然後在網路佔用後,它開始在文件末尾附加一些垃圾,直到40%。 (由於檔案伺服器的邏輯而添加了垃圾,以便在之後提供垃圾資料30mins)。

現在,我有了一個新的 url 位置,其中包含一些新的令牌,可用於30mins相同檔案的下一個。如何繼續下載相同文件但從30%以後開始下載?

或者有什麼應用程式可以做到這一點?

前任:

$ wget -c http://xyz.com/file.txt?token=1

30% [=============>                                 ]
40% [=================>                             ] (10%junk added)

^C - cancelled

$ wget -c http://xyz.com/file.txt?token=2 --from='30%'

31% [+++++++++++++=>                               ]

注意:- --from='30%'僅作為範例是否可以完成。沒有任何類似的論點存在於wget

答案1

wget -c / --continue始終繼續使用給定的檔案大小,但您可以更改:

用於truncate將檔案縮小回原始30%大小(您必須以位元組或千位元組為單位指定大小)。或者您可以使用head -c SIZE file > file_30pc,它不會觸及原始文件(但您必須重命名它)。

正如 BlueManCZ 所建議的,您可能需要使用它-O output-file來確保它是同一個檔案。

筆記:使用--start-pos而不是-c/--continue指定最後一個好位置將不是工作,而是從該位置開始創建一個新文件,它不會附加現有文件(如果您指定,它甚至會覆蓋-O)。

答案2

如果您需要繼續從另一個 URL 下載相同的檔案(或重新命名的檔案),則必須在命令中指定檔案的名稱。

wget -c -O myfilename https://examle.net/file1.txt

[will be stoped in 30%]

wget -c -O myfilename https://another_url.net/file2.txt

[will start on 30% of previous file]
[file1.txt and file2.txt must be same]

但我不知道這是否能完全解決您的問題。

答案3

您可以嘗試另一個名為 aria2 的很棒的 Linux 工具,您需要執行以下操作才能恢復下載

aria2c -c -m 0 -o "myfile.zip" "http://example.com/file.zip"

這裡 -c 告訴繼續之前的下載 -m 告訴無限次重試下載 -o 告訴輸出文件

試試 aria2 是 Linux 上最好的下載器之一

相關內容