wgetを使用して正常に完了したダウンロードを記録する方法

wgetを使用して正常に完了したダウンロードを記録する方法

私はxargsを使って多数のファイルを並列にダウンロードしています。私が経験している問題は、いくつかのダウンロードがしばらくして失敗することです。したがって、リストを実行すると、すべてのダウンロードが正常に完了しないため、コマンドを再実行する必要があります。

cat links.txt | xargs -n 2 -P 16 wget -c -q -O

正常にダウンロードしたファイル名をファイルに出力する方法はありますか?私が見つけることができる唯一の解決策は、wgetログファイルを解析することです。

答え1

代わりにGNUパラレルを使用してくださいxargs

cat links.txt | parallel --joblog my.log -n 2 -P 16 wget -c -q -O

Exitvalの熱を見てくださいmy.log

終了値で再試行したい場合、 GNU Parallelに--retriesは操作を再試行するオプションがあります。--retry-failed

答え2

wgetまたはそのログの出力を解析することが有効です。例えば、

$ wget -O fixedgear.html https://www.sheldonbrown.com/fixedgear.html 2>&1 | \
    awk '/saved/ { print $6 }' | \
    sed -e 's/^.//' -e 's/.$//'
README.md

パイプラインの最初のステップはファイルのダウンロードを試み、2番目のステップはwgetを見つけてファイルが正常に保存されたことを宣言して出力する場合、最後のステップはファイル名から引用符を削除します。

--trieswget と n の値を調整すると、--waitretry初期パラレルダウンロードが初めて成功するのに役立ちます。

関連情報