Get Dateierstellungsdatum über HTTP
-
29-09-2019 - |
Frage
eine Datei auf einem Webserver Given (zB http://foo.com/bar.zip -> nur über HTTP), ist es eine Möglichkeit, das Datum Attribute (zB Datum zu erhalten [erstellt, verändert]), ohne das gesamte Archiv in erster Linie Download
Im Moment ich das Archiv herunterladen und die Attribute programmatisch lesen. Das Problem ist, dass das Archiv Dutzende von MiB ist, so dass es wie eine Verschwendung von Ressourcen scheint die ganze Sache herunter zu laden und nur ein paar Bytes Informationen abliest enden.
Ich stelle fest, dass die Bandbreite praktisch frei ist, aber ich weiß nicht, wie in jedem Fall verschwenderisch sein.
Lösung
Versuchen Sie Last-Modified von Header zu lesen
Andere Tipps
Achten Sie darauf, eine HTTP HEAD-Anforderung verwenden statt einer HTTP-GET-Anforderung nur die HTTP-Header zu lesen. Wenn Sie ein HTTP GET tun, werden Sie die ganze Datei herunterladen trotzdem, auch wenn Sie nur die HTTP-Header.
zu inspizieren entscheidenNur aus Gründen der Einfachheit ist hier eine Zusammenstellung der bestehenden (perfekt) Antworten von @ihorko und @ JanThomä, dass Anwendungen locken. Andere Option ist auch vorhanden, natürlich, aber hier ist eine voll funktionsfähige Antwort.
Mit curl mit der -I
Option:
-I, --head
(HTTP / FTP / FILE) Holt den HTTP-Header nur! HTTP-Server verfügen über den Befehl HEAD, die diese Anwendungen nichts anderes als den Header eines Dokuments zu erhalten. Wenn nur auf einem FTP- oder FILE-Datei, curl zeigt die Dateigröße und Zeitpunkt der letzten Änderung verwendet.
Auch die -s
Option ist schön hier:
-s, --silent
Stille oder Ruhe-Modus. Nicht Statusanzeige oder Fehlermeldungen angezeigt. Macht Locken stumm. Es wird immer noch geben die Daten, die Sie fordern, möglicherweise sogar an das Terminal / stdout, wenn Sie es umleiten.
So etwas wie dies würde den Trick tun:
curl -sI http://foo.com/bar.zip | grep 'Last-Modified' | cut -d' ' -f 2-