Скрипт очереди загрузки Wget

Идея состоит в том, что когда wget работает и загружает что-то, я могу просто добавить другой 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 перезапускался, если в wget-download-link.txt файл, но остановить его, когда файл уже существует?

@msturdy Я запускаю ваш скрипт, но wget перезагружает и переименовывает файлы, которые уже существуют, мой скрипт:

#!/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 и т. д.

2

Решение

РЕШЕНО ЭТОМ

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
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]