Überprüfen Sie MD5 eines auf einem Webserver gehosteten Dateiheaders

Überprüfen Sie MD5 eines auf einem Webserver gehosteten Dateiheaders

Ich schreibe ein Bash-Skript, um regelmäßig eine Setup-Datei mit cURL herunterzuladen. Das Problem ist folgendes: Die Datei ist etwa 110 MB groß und hat immer den gleichen Dateinamen.

Ich kann die Datei herunterladen, ihren Hash (md5, sha1) überprüfen und sie mit einer zuvor heruntergeladenen Datei vergleichen:

  • Wenn der Hash gleich ist, ist die Datei dieselbe und wurde nicht aktualisiert: In diesem Fall habe ich sie ohne Grund heruntergeladen.
  • Wenn der Hash anders ist, handelt es sich bei der Datei auf dem Webserver um eine neue Version: In diesem Fall verwende ich diese Datei und aktualisiere auf die neue Version.

Ich möchte dieses Skript jede halbe Stunde ausführen und es stört mich, 110 MB umsonst herunterzuladen (dieselbe Dateiversion).Gibt es eine Möglichkeit, die ersten 500 KB mit „curl“ in der Befehlszeile herunterzuladen?

Mein aktueller Workaround besteht darin, die Dateigröße anhand des HTTP-Headers zu vergleichen, aber ich hätte trotzdem gerne eine Antwort auf die obige Frage und würde gerne wissen, ob dies machbar ist. Vielen Dank.

curl -sI 'http://domain.tld/uri/updater/getLatest.etcenter?c=var&asi=allright' -H 'Host: domain.tld' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) wie Gecko' -H 'Akzeptieren: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0,8' -H 'Akzeptierte Sprache: en-US,en;q=0,5' -H 'Akzeptierte Kodierung: gzip, deflate, br' -H 'DNT: 1' -H 'Verbindung: Keep-Alive' | grep 'Inhaltslänge:'

Antwort1

Können Sie den Änderungsdaten Ihrer Datei sowohl auf dem Client als auch auf dem Server vertrauen? Wenn ja, können Sie die HTTP-Funktionalität „bedingtes GET“/„If-Modified-Since“ mit curlder -zOption verwenden. Sie müssen überhaupt nichts herunterladen. Dies ist eine integrierte Funktionalität des HTTP-Protokolls, die seit jeher überall häufig verwendet wird.

Sie müssen nichts herunterladen, wenn das Änderungsdatum der Datei auf dem Server nicht neuer ist als das der zuletzt heruntergeladenen Datei.

Erwägen Sie für Ihr bashSkript die Verwendung stat(1)zum Ermitteln der Mod-Zeit der lokalen Datei, sodass Sie diese Informationen einspeisen können curl -z ….

verwandte Informationen