2013-09-22 8 views
5

Ich versuche wget zu verwenden, um eine Datei unter einem anderen lokalen Namen und herunterladen nur herunterladen, wenn die Datei auf dem Server neuer ist.wget :: umbenennen heruntergeladene Dateien und nur herunterladen, wenn neuere

Was ich dachte, dass ich tun konnte, war die -O Möglichkeit wget zu verwenden, um in der Lage sein, den Namen der heruntergeladenen Datei, wie in wählen:

wget http://example.com/weird-name -O local-name 

und kombinieren, dass mit der -N Option Es wird nichts heruntergeladen, außer wenn der Zeitstempel neuer auf dem Server ist. Aus Gründen in den Kommentaren unten erläutert wird, weigert wget beiden Fahnen zu kombinieren:

WARNING: timestamping does nothing in combination with -O. See the manual 
for details. 

Irgendwelche Ideen auf prägnante Abhilfen?

+1

Was ist Ihr Ziel? man wget erklärt, warum es sinnlos ist, -N mit -O zu mischen, da: -O nicht bedeuten soll, einfach "die Namensdatei anstelle der in der URL zu verwenden"; es ist eher analog zur Shell-Umleitung. Kurz gesagt, Ihre Ausgabedatei wird immer neuer sein als auf dem Server und nichts wird jemals heruntergeladen werden. –

+1

Ich nehme an, die eigentliche Frage ist "Was ist die idiomatische Art in wget/bash heruntergeladene Dateien umbenennen ** und ** nur herunterladen, wenn sie neuer auf dem Server sind" - Ich habe die Frage umformuliert, um das klar zu machen. –

+0

@ecelis wenn ich dich bekomme und was 'man wget' recht sagt, bedeutet das, dass die' -O' Datei immer neu geschrieben/gekürzt wird, wenn du 'wget' startest und der Zeitstempel immer JETZT ist, in diesem Fall Der Download wird nie ausgelöst. Recht? –

Antwort

2

herunterladen, erstellen dann einen Link

wget -N example.com/weird-name 
ln weird-name local-name 

Danach Sie wget -N laufen kann und es wird funktionieren wie erwartet:

  • Nur herunterladen, wenn neuere
  • Wenn eine neue Datei heruntergeladen Es wird von beiden Namen zugänglich sein, ohne kostet Sie zusätzlichen Speicherplatz
+0

Dies könnte funktionieren, es sei denn, der Grund für die Verwendung von "-O" ist, dass Sie eine Datei aus mehreren Quellen in dasselbe Verzeichnis heruntergeladen haben. Zum Beispiel, wenn Sie mehrere robots.txt-Dateien heruntergeladen haben. –

1

Wenn andere Werkzeug in Ihrem Fall möglich ist, empfehle ich die kostenlose Open-Source lwp-mirror:

lwp-mirror [-options] <url> <file> 

Es funktioniert genau wie Sie wollen, ohne Abhilfen.

Dieser Befehl wird von dem Paket libwww-perl unter anderem auf Ubuntu und Debian bereitgestellt.

Beachten Sie, dass lwp-mirror nicht alle anderen Funktionen von wget unterstützt. Beispielsweise können Sie keinen Benutzeragenten für die Anforderung wie wget festlegen.

Verwandte Themen