Ich möchte curl
einen Link herunterladen, aber ich möchte, dass Dateien, die bereits existieren, übersprungen werden. Im Moment wird die Codezeile, die ich habe, weiterhin überschreiben, egal was:
Wie kann das erreicht werden?
Sie könnten Ihren Aufruf einfach auf curl
in einem if
-Block setzen:
Beachten Sie auch, dass in Ihrem Beispiel $url
in einfachen Anführungszeichen steht, was nicht Ihren Vorstellungen entspricht. Vergleichen Sie:
An:
%Vor% Außerdem hat curl
eine Option --silent
, die in Skripten nützlich sein kann.
Das curl
unterstützt möglicherweise das Überspringen der Dateien, wenn Sie es mit -O
und -J
verwenden, aber sein Verhalten ist inkonsistent.
Das -J
( --remote-header-name
) teilt der Option -O
( --remote-name
) grundsätzlich mit, dass sie den vom Server angegebenen Content-Disposition
-Dateinamen verwendet, anstatt einen Dateinamen aus der URL zu extrahieren. Auf diese Weise weiß der curl
nicht wirklich, welchen Dateinamen der Server zurückgibt, sodass er die vorhandene Datei aus Sicherheitsgründen ignorieren kann.
Quelle: Re: -J "Weigerung, zu überschreiben ..."
Zum Beispiel:
%Vor%Wie bereits erwähnt, ist sein Verhalten jedoch nicht vorhersehbar und funktioniert nicht für alle Dateien.
Sie können die Option curl -C -
verwenden. Diese Option wird verwendet, um einen fehlerhaften Download fortzusetzen, überspringt den Download jedoch, wenn die Datei bereits vollständig ist. Beachten Sie, dass das Argument für -C
ein einzelner Bindestrich ist. Ein Nachteil könnte sein, dass curle immer noch kurz mit dem Remote-Server Kontakt aufnimmt, um nach der Dateigröße zu fragen.
Tags und Links command-line curl download