¿El equivalente tar de zip -o (--latest-time)?

¿El equivalente tar de zip -o (--latest-time)?

La utilidad Zip nos permite

Establezca la hora de "última modificación" del archivo zip en la hora de "última modificación" más reciente (más antigua) que se encuentra entre las entradas del archivo zip

con

zip -o [...]

o

zip --latest-time [...]

¿Cuál es la forma más sencilla de hacer lo mismo con TAR?

Respuesta1

new_file="$(find dir/ -type f -exec stat --printf='%n\0%Y\n' {} + | sort -k2,2 -nt '\0' | tail -n1 | cut -d '' -f1)"; tar -zcf foo.tar.gz dir/; touch -r "$new_file" foo.tar.gz

Ejemplo de lo que pasa

tar -zcf foo.tar.gz dir/; touch -r fileX foo.tar.gz

deberías cambiarfoo.tar.gz,directorio/en el comando anterior

Él

  • encuentra todos los archivos endirectorio/(lo mismo para ser alquitranado)
  • obtiene su última marca de tiempo de modificación en segundos desde la época
  • ordena numéricamente y toma el de abajo (el más reciente)
  • touch usa ese archivo como referencia al ajustar la marca de tiempo foo.tar.gz.

Respuesta2

Probablemente no haya una sola línea (en POSIX al menos). Yo uso un script (directorios táctiles) para establecer marcas de tiempo del directorio para que coincidan con la marca de tiempo más reciente de los archivos dentro del directorio y luego usar esa marca de tiempo para el archivo resultante.

Ese último paso se puede realizar utilizando la -ropción (referencia) detouch. En realidad yo tampoco uso eso, sino una utilidad (cpd).

información relacionada