Wget下载队列脚本

时间:2014-12-23 17:51:45

标签: php wget

我们的想法是,当wget正在运行并下载某些内容时,我可以添加另一个URL,该URL将在当前下载完成后下载。我只想一次下载1个文件。我写了这个剧本

#!/bin/bash

test=/tmp/wget-download-link.txt

echo -n "$test" | while IFS= read -N 1 a; do

    wget -o /tmp/wget.log -P /mnt/usb -i /tmp/wget-download-link.txt

    if [[ "$a" == $'\n' ]] ; then
        wget -nc -o /tmp/wget.log -P /mnt/usb -i /tmp/wget-download-link.txt
    fi

    #printf "$a"
    echo download finished

done

该脚本将检查包含URL的任何新行,如果有,则会再次重新运行wget,问题是此脚本将继续循环,wget将连续下载相同的文件如果已经存在则重命名它们。如果wget-download-link.txt文件中有任何新网址,但如果该文件已存在,请将其停止,如何重新运行wget?

@msturdy 我运行你的脚本但是要重新下载并重命名已经存在的文件,我的脚本:

#!/bin/bash

test=/tmp/wget-download-link.txt
l=$(wc -l $test)

tail -n $l -f $test | while read url; do
    wget -o /tmp/wget.log -P /mnt/usb -i /tmp/wget-download-link.txt
done

我的wget-download-link.txt文件:

http://media2.giga.de/2014/11/angel-beats-kanade.jpg
http://juanestebanrojas.com/wp-content/uploads/2014/06/angel-beats-wallpapers-4.jpg
http://images5.fanpop.com/image/photos/30100000/Angel-Beats-new-life-angel-beats-30142329-2560-909.jpg
http://kristenhazelkannon.files.wordpress.com/2013/06/angelbeats2.jpg

已下载的文件:

angel-beats-wallpapers-4.jpg
angel-beats-wallpapers-4.jpg.1
Angel-Beats-new-life-angel-beats-30142329-2560-909.jpg.1
Angel-Beats-new-life-angel-beats-30142329-2560-909.jpg
angel-beats-kanade.jpg.2
angel-beats-kanade.jpg.1
angel-beats-kanade.jpg
angelbeats2.jpg

脚本继续运行,只会将文件重命名为.1 .2 .3等。

1 个答案:

答案 0 :(得分:1)

已解决此问题

while [ true ] ; do
    urlfile=$( ls /root/wget/wget-download-link.txt | head -n 1 )
    dir=$( cat /root/wget/wget-dir.txt )
    if [ "$urlfile" = "" ] ; then
        sleep 180
        continue
    fi

    url=$( head -n 1 $urlfile )
    if [ "$url" = "" ] ; then
        mv $urlfile $urlfile.invalid
        continue
    fi

    mv $urlfile $urlfile.busy
    wget $url -P $dir -o /www/wget.log -c -t 100 -nc
    mv $urlfile.busy $urlfile.done
done