Wie kann ich eine Datei herunterladen, sobald sie unter Linux verfügbar ist?

412
geek1011

Wie kann ich etwas auf einem Linux-Computer so einrichten, dass eine Datei auf einem Webserver etwas anderes als einen 404-Fehler zurückgibt, wird sie heruntergeladen. Ich möchte, dass die Prüfung nach dem erfolgreichen Start der Datei abgebrochen wird, es aber trotzdem erneut versucht wird, falls die Datei fehlschlägt.

Ich habe versucht, einen cron-Job mit wget zu verwenden, aber ich scheine nicht herauszufinden, wie man eine leere Datei auf einem 404-Fehler erstellt.

Ist das möglich und wie?

3

2 Antworten auf die Frage

2
Toby Speight

You can either check (with test -s) that the file has contents, or simply use the return value of wget. Download to a temporary file, and only if the test passes, then copy to the real output:

$ wget -q -O /tmp/a http://localhost/nonexistent && mv -v /tmp/a /tmp/b $ wget -q -O /tmp/a http://localhost && mv -v /tmp/a /tmp/b ‘/tmp/a’ -> ‘/tmp/b’ $ 
Ich habe es fast mit einer Variation Ihrer Antwort gelöst: `wget -q -O / tmp / a http: // localhost / nicht vorhanden && (mv / tmp / a / tmp / b; Echo-Erfolg)` geek1011 vor 8 Jahren 0
0
Liran

Sie können ein Bash-Skript schreiben, das die URL überprüft und die Ausgabe überprüft. Wenn die Ausgabe "404" enthält, löschen Sie sie. Ansonsten haben Sie Ihre Datei erhalten und Sie können das Skript aus cron (aus dem Skript) entfernen. Sie können auch eine Skriptsprache verwenden, um das Problem zu lösen.

Die Zeichenfolge "404" könnte legitimerweise in der Datei vorkommen. Außerdem bekomme ich auf meinem System eine vollständig leere Datei, wenn ich 'wget' eine nicht vorhandene URI gebe. Toby Speight vor 8 Jahren 1
@TobySpeight Ich habe eine generelle Lösung gegeben. Natürlich ist ein genaueres Parsing erforderlich. Und Sie können leicht überprüfen, ob eine Datei leer ist. Liran vor 8 Jahren 0