¿Realmente necesita comprimir el archivo?
wget
proporciona -N, --timestamping
que, obviamente, activa el sellado de tiempo. Lo que hace es decir que su archivo se encuentra en www.example.com/file.txt
La primera vez que lo haga:
$ wget -N www.example.com/file.txt
[...]
[...] file.txt saved [..size..]
La próxima vez que va a ser así:
$ wget -N www.example.com/file.txt
Server file no newer than local file “file.txt” -- not retrieving.
Excepto si se actualizó el archivo en el servidor.
Eso resolvería su problema, si no comprimió el archivo.
Si realmente necesitas comprimirlo, entonces creo que iría con la comparación del hash del nuevo archivo/archivo y el viejo. Lo que importa en ese caso es, ¿qué tan grande es el archivo descargado? ¿Vale la pena comprimir primero y luego verificar los hash? ¿Vale la pena descomprimir el archivo antiguo y comparar los hashes? ¿es mejor almacenar el antiguo hash en un archivo txt? ¿Todos estos tienen una ventaja sobre sobrescribir el archivo anterior?
Solo lo sabe, realice algunas pruebas.
Así que si vas el camino de hash, considere la compresión sha256 y xz (algoritmo LZMA2).
me gustaría hacer algo como esto (en Bash):
newfilesum="$(wget -q www.example.com/file.txt -O- | tee file.txt | sha256sum)"
oldfilesum="$(xzcat file.txt.xz | sha256sum)"
if [[ $newfilesum != $oldfilesum ]]; then
xz -f file.txt # overwrite with the new compressed data
else
rm file.txt
fi
y que de hecho;
No lo sabía en realidad. Gracias por la información, muy útil. Lamentablemente, el servidor no proporciona ningún encabezado etag o última modificación útil. – aidan
Al ejecutar 'wget' con' -N', la decisión de descargar o no una copia más reciente de un archivo depende del _local_ y _remote_ ** timestamp ** y ** size ** del archivo. Así que si sabe que el archivo crece cada vez que se actualiza y no puede tener el mismo tamaño, o si cree que la posibilidad de que el archivo se actualice y tenga el mismo tamaño es demasiado pequeño, puede usarlo. – c00kiemon5ter
@aidan Edité mi respuesta para proporcionar una solución tipo hash en un momento, compruebe si le conviene;) – c00kiemon5ter