Dies ist das einfachste Beispiel für die Ausführung von wget:
wget http://www.example.com/images/misc/pic.png
aber wie macht man wget überspringen download wenn pic.png
es schon verfügbar ist?
Dies ist das einfachste Beispiel für die Ausführung von wget:
wget http://www.example.com/images/misc/pic.png
aber wie macht man wget überspringen download wenn pic.png
es schon verfügbar ist?
Antworten:
Versuchen Sie den folgenden Parameter:
-nc
,--no-clobber
: Downloads überspringen, die in vorhandene Dateien heruntergeladen werden.
Beispielnutzung:
wget -nc http://example.com/pic.png
[ ! -e "$(basename $URL)" ] && wget $URL
--recursive
Option verwende.
Die -nc
, --no-clobber
Option ist nicht die beste Lösung , wenn neuere Dateien nicht heruntergeladen werden. Man sollte -N
stattdessen verwenden, wodurch die Datei nur heruntergeladen und überschrieben wird, wenn der Server eine neuere Version hat. Die richtige Antwort lautet also:
wget -N http://www.example.com/images/misc/pic.png
Wenn Sie dann Wget mit -N ausführen, mit oder ohne
-r
oder-p
, hängt die Entscheidung, ob eine neuere Kopie einer Datei heruntergeladen werden soll oder nicht, vom lokalen und Remote-Zeitstempel und der Größe der Datei ab.-nc
darf nicht gleichzeitig mit angegeben werden-N
.
-N
,--timestamping
: Zeitstempel einschalten.
-N
kann dies zu einem Ausfall führen und wget wird immer wieder heruntergeladen. Also manchmal -nc
ist bessere Lösung.
wget
wird er sich beschweren Last-modified header missing
. Dies ist genau die beschriebene Situation.
Bei der Ausführung von Wget mit -r
oder -p
aber ohne -N
, -nd
oder -nc
, Wieder Herunterladen einer Datei wird in die neue Kopie führen einfach die alte überschrieben werden .
Durch Hinzufügen -nc
wird dieses Verhalten verhindert, und stattdessen wird die Originalversion beibehalten und neuere Kopien auf dem Server werden ignoriert.
Die Antwort, nach der ich gesucht habe, ist https://unix.stackexchange.com/a/9557/114862 .
Wenn Sie das
-c
Flag verwenden, wenn die lokale Datei größer oder gleich groß wie die Serverversion ist, wird ein erneutes Herunterladen vermieden.
wget -i filelist.txt -c
setzt einen fehlgeschlagenen Download einer Liste von Dateien fort.
-nc
verhindert nicht das Senden der HTTP-Anfrage und das anschließende Herunterladen der Datei. Nach dem Herunterladen der Datei wird einfach nichts unternommen, wenn die Datei bereits vollständig abgerufen wurde. Gibt es eine Möglichkeit, die HTTP-Anforderung zu verhindern, wenn die Datei bereits vorhanden ist? stackoverflow.com/questions/33203898/…