Linuxで3万ページ以上をダウンロードする必要があり、単純なbashスクリプトとwgetでそれができると想像しました。これが、私が思いついたものです。
#!/bin/bash
start_time=$(date +%s)
for i in {1..30802}
do
echo "Downloading page http://www.domain.com/page:$i"
wget "http://www.domain.com/page:$i" -q -o /dev/null -b -O pages/$i
running=$(ps -ef | grep wget | wc -l)
while [ $running -gt 1000 ]
do
running=$(ps -ef | grep wget | wc -l)
echo "Current running $running process."
sleep 1;
done
done
while [ $running -gt 1 ]
do
running=$(ps -ef | grep wget | wc -l)
echo "Waiting for all the process to end..."
sleep 10;
done
finish_time=$(date +%s)
echo "Time duration: $((finish_time - start_time)) secs."
一部のページが完全にダウンロードされていません!
上記のコードは1kWgetを並列実行プロセスにし、プロセスを追加するためにそれが下がるまで待機するので、実際に利用可能なすべてのインターネットリンクを使い果たしている可能性がありますか?
ページが実際に正しくダウンロードされていることを確認するために、これをより信頼性の高いものにするにはどうすればよいですか?
編集:
- ページをダウンロードするためのより良いオプションはcurlであると聞きましたが、それは本当ですか?