私は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を見つけてファイルが正常に保存されたことを宣言して出力する場合、最後のステップはファイル名から引用符を削除します。
--tries
wget と n の値を調整すると、--waitretry
初期パラレルダウンロードが初めて成功するのに役立ちます。