Ich habe eine Liste mit etwa 200 Servern, die Links zu einzelnen Dateien enthalten. Für diese Frage gehen wir einfach davon aus, dass es sich um TXT-Dateien handelt. Ich muss jede Datei herunterladen, einige Server haben jedoch nur die komprimierte Version und nicht das Original und einige Server haben beides. Die verwendete Komprimierung ist bzip2.
Das bedeutet, dass ein Server die folgenden Dateien haben könnte:
foo.txt.bz2
bar.txt
bar.txt.bz2
Ich habe wget angewiesen, nur .txt-Dateien und .txt.bz2-Dateien herunterzuladen, und ich verwende no-clobber, um zu verhindern, dass von jedem Server dieselbe Datei heruntergeladen wird. Sobald jedoch eine komprimierte Datei heruntergeladen wurde, wird sie dekomprimiert; das Original bleibt erhalten, die bz2-Dateien jedoch nicht. Dies bedeutet, dass wget von jedem einzelnen Server dieselben bz2-Dateien herunterlädt, da es lokal keine komprimierte Version hat.
Wie weise ich wget an,nichtLaden Sie .bz2-Dateien herunter, wenn die dekomprimierte Version bereits vorhanden ist (laden Sie beispielsweise foo.txt.bz2 nicht herunter, wenn foo.txt bereits vorhanden ist).
Danke
Antwort1
Ich würde die wget
Befehle folgendermaßen verketten:
wget http://example.com foo.txt || wget http://example.com/foo.txt.bz2 && bzip -d foo.txt.bz2
Der bzip -d
Befehl dekomprimiert das Archiv, aber nur, wenn wget erfolgreich ist.