Ich möchte eine Kopie einer großen Bilddatei (+20 MB) herunterladen, wenn sie sich ändert. Aber wie soll ich wissen, ob sich das Bild geändert hat oder nicht, ohne es alle X Sekunden herunterzuladen und mit der alten Version zu vergleichen, die ich habe? Andernfalls würde es sehr bandbreitenintensiv und langsam sein.
Gibt es eine Möglichkeit, die Größe des Bildes zu bestimmen, bevor es vollständig heruntergeladen wird? Wenn sich also die Größe geändert hat, bedeutet das, dass sich auch das Bild geändert hat.
Können wir zwei Bilder vergleichen, ohne sie herunterzuladen (oder indem wir nur die ersten paar Kilobyte herunterladen)? Mit anderen Worten: Enthalten die Bilder Größeninformationen oder einen Hash-Wert? Oder etwas in der Art.
Antwort1
Wget erlaubt den Download nur, wenn die serverseitige Datei neuer ist:
When running Wget with -N, with or without -r or -p, the decision
as to whether or not to download a newer copy of a file depends on
the local and remote timestamp and size of the file. -nc may not
be specified at the same time as -N.
Antwort2
Ansatz 1:Der Dateiserver erlaubt möglicherweise den Verzeichniszugriff. Versuchen Sie, auf die Ausgabe des übergeordneten Verzeichnisses zuzugreifen und diese dann zu analysieren. Beispiel:https://www.kernel.org/pub/site/
Ansatz 2:Rufen Sie im Code das Header-Feld „content-length“ ab, um die Dateigröße zu ermitteln, dieMaiein Hinweis darauf sein, dass sich die Datei geändert hat. Beispiel:https://stackoverflow.com/questions/2983073/how-to-know-the-size-of-a-file-before-downloading-it/12271781#12271781
Ansatz 3:Bitten Sie den Serveradministrator, Ihnen eine Prüfsumme zum Herunterladen, eine Benachrichtigung, dass eine neue Datei verfügbar ist, oder eine andere Form des Shell-/Verzeichniszugriffs bereitzustellen.