
wget
次のコマンドを使用して作業を開始しました。
urls=(https://example.com/file1 https://example.com/file2
https://example.com/file3 https://example.com/file4)
for url in ${urls[@]}; do
wget "$url" 2>/dev/null && echo "$url done" >> progress &
done
ファイルはそれぞれ30〜40G程度だったので、一晩中実行しました。今日もう一度確認してみると次のようになります。
-rw-rw-r-- 1 a staff 13M Mar 18 15:11 file1
-rw-rw-r-- 1 a staff 18M Mar 18 15:12 file1.1
-rw-rw-r-- 1 a staff 38G Mar 18 21:10 file1.2
-rw-rw-r-- 1 a staff 12M Mar 18 15:12 file2
-rw-rw-r-- 1 a staff 44G Mar 18 21:35 file2.1
-rw-rw-r-- 1 a staff 446 Mar 18 21:35 progress
-rw-rw-r-- 1 a staff 40G Mar 18 21:24 file3.1
-rw-rw-r-- 1 a staff 4.4M Mar 18 15:12 file3
-rw-rw-r-- 1 a staff 6.5M Mar 18 15:12 file4
-rw-rw-r-- 1 a staff 42G Mar 18 21:27 file4.1
つまり、filename.N
サイズは適しているようですが、filename
ファイル自体が小さすぎるファイルがいくつかあります。このprogress
ファイルは、すべてのファイルが正常にダウンロードされたことを報告します。
https://example.com/file1 done
https://example.com/file2 done
https://example.com/file3 done
https://example.com/file4 done
filename.N
私はこのファイルを提供した人に各ファイルのmd5sumを提供し、そのファイルが実際に完全なコピーであることを確認できるように依頼しました。また、実際に問題のファイルの完全なコピーであると安全に想定できるfilename.N
最大値は何ですか?N
wget
プロセスが何度も再起動されたため、.N
このファイルがあるようですが、ファイルが&& echo
機能しているようだとは、ファイルが正しくダウンロードされたことを意味しますか、それともダウンロードが正しく行われたにもかかわらず実行された可能&&
性がありますか?不完全なファイルですか?
答え1
サーバーから送信されたヘッダー(--server-response
)が表示され、ヘッダーに含まれている場合、Content-Length
wgetはそのバイト数を受信したときにのみ終了します。これはargのマニュアルページに記載されています--ignore-length
。しかし、md5や他の合計は常に良いアイデアです!
答え2
私の解釈https://www.gnu.org/software/wget/manual/wget.html
'--no-clobber' 同じディレクトリからファイルを複数回ダウンロードする場合、Wget の動作は '-nc' を含む複数のオプションによって異なります。場合によっては、繰り返しダウンロード中にローカルファイルが破損または上書きされることがあります。それ以外の場合は維持されます。
「-N」、「-nc」、「-r」、または「-p」なしでWgetを実行すると、同じディレクトリに同じファイルをダウンロードすると、ファイルの元のコピーが保持され、2番目のコピーはそのまま残ります。ファイルを再ダウンロードすると、3 番目のコピーの名前は「file.2」と指定されます。
... wgetは最新のバージョンを.Nファイルに入れるので、信頼できます。除外する必要がある他の問題は、WGETRCまたは他のグローバルwgetrcファイルを上書きすることです。