Necesito archivar algunos archivos deterministicamente, de modo que obtenga el mismo archivo comprimido si el contenido de los archivos es el mismo. Necesito esto para probar la igualdad de los archivos de archivo más tarde.
sin embargo, tar incluye la información de la marca de tiempo, por lo que obtengo diferentes archivos de archivo, incluso si el contenido de los archivos es el mismo.
¿Cómo puedo crear un archivo (con tar, zip o algo más) que no incluya información de marca de tiempo?
Nota: soy consciente de que incluso si los dos archivos tar difieren, puedo ignorar sus marcas de tiempo y comparar solo su contenido con herramientas como tar --diff
o tarsum
. Sin embargo, no puedo usar ninguna otra herramienta externa para realizar comparaciones (debido a mi configuración); Solo puedo probar los dos archivos para la igualdad exacta.
Nota: soy consciente de que podría establecer la marca de tiempo de todos los archivos en un valor determinado antes de archivar los archivos, por lo que sus marcas de tiempo serían las mismas. Sin embargo, hay muchos archivos y no quiero hacer esto. Solo quiero archivar estos archivos sin información de marca de tiempo
ejemplo:
$ mkdir copy1
$ touch copy1/file1
$ touch copy1/file2
$ sleep 60
$ mkdir copy2
$ touch copy2/file1
$ touch copy2/file2
$ ls -l copy1
total 0
-rw-r--r-- 1 david wheel 0 Oct 27 00:59 file1
-rw-r--r-- 1 david wheel 0 Oct 27 00:59 file2
$ ls -l copy2
total 0
-rw-r--r-- 1 david wheel 0 Oct 27 01:00 file1
-rw-r--r-- 1 david wheel 0 Oct 27 01:00 file2
# the content of those files is the same; they only differ by the their timestamp
$ (cd copy1; tar -cvf ../copy1.tar .)
$ (cd copy2; tar -cvf ../copy2.tar .)
$ tar -tvf copy1.tar
drwxr-xr-x 0 david wheel 0 Oct 27 00:59 ./
-rw-r--r-- 0 david wheel 0 Oct 27 00:59 ./file1
-rw-r--r-- 0 david wheel 0 Oct 27 00:59 ./file2
$ tar -tvf copy2.tar
drwxr-xr-x 0 david wheel 0 Oct 27 01:00 ./
-rw-r--r-- 0 david wheel 0 Oct 27 01:00 ./file1
-rw-r--r-- 0 david wheel 0 Oct 27 01:00 ./file2
$ diff copy1.tar copy2.tar
Binary files copy1.tar and copy2.tar differ
Lo intenté con zip -X
en lugar de tar
, pero me sale el mismo resultado