1 votos

Comprimir una carpeta para crear el archivo tgz

Tengo una carpeta que quiero crear archivo tgz y calcular su sha256:

La carpeta se convierte a tgz usando el siguiente comando

 "tar -c -C #{Shellwords.escape dir} #{Shellwords.escape basename} " \
        "--owner=0 --group=0 --mtime='2000-01-01 00:00:00' | gzip -n > #{Shellwords.escape file}"

Ahora me encontré con el proceso anterior utilizando 2 usuarios separados y me dio 2 archivos: 1 y 2

Ambos archivos tgz difieren en tamaños de:

-rw-r--r--@ 1 myuser  \Domain Users  9024 Jul 31 14:28 1.tgz
-rw-r--r--@ 1 myuser  \Domain Users  9037 Jul 31 14:29 2.tgz

Si trato de calcular diff entre los archivos no veo ninguna de las diferencias.Diff se obtuvo con el siguiente comando.

diff  <(tar -tvf 1.tgz | sort) <(tar -tvf 2.tgz | sort)

Si, calculo que sha256 usando ruby de estos 2 archivos , entonces es diferente.

La pregunta es : ¿por Qué obtengo diferencia en tgz de archivos cuando se ejecuta desde diffenrent los usuarios.

EDITAR: Después de leer los comentarios y buscar un poco en google he encontrado que el orden en que los archivos se añaden no es fijo cada vez.

ver este https://reproducible-builds.org/docs/archives/#file-ordering.

Voy a probar esto y añadir detalles.

1voto

cnst Puntos2483

Hay muchas cosas que esto podría ser debido a.

  • Los metadatos que se almacenan por tar (así como los metadatos que se almacenan por gzip, que puede incluir el tiempo de modificación del archivo tar). Veo que estás usando algún GNU tar opciones que podrían restablecer algunas partes de este tipo de metadatos, pero yo apuesto a que las opciones no exhaustiva de todos los atributos de variables.

  • El orden de los archivos. Al extraer los archivos en un sistema de ficheros, el orden poco importa para la mayoría de las aplicaciones (aunque cada entrada de directorio en general, viene antes o después de cualquier otra entrada dentro de la misma dirent en el sistema de ficheros subyacente). Sin embargo, el orden de los archivos en un archivo tar no está garantizada.

  • La compresión gzip. Es garantizado por el formato de archivo que los archivos comprimidos sería descomprimida a los originales, sin embargo, no es necesariamente garantía de que su forma comprimida tiene que ser idéntico. Por otra parte, si la entrada difiere en contenido (incluso si se mantiene en el mismo tamaño), luego, del mismo modo, usted verá que los dos archivos, incluso puede ser tan diferente como para tener diferentes tamaño de archivo.

En resumen, si usted está tratando de determinar si el contenido de dos carpetas es el mismo, el uso de .tgz de archivos no es probablemente la mejor manera de ir sobre ella.

1voto

Xandl Puntos11

¿Y si no ¿ordenar la tar cuando se ejecuta el comando diff? Sólo haya agregado los archivos en un orden diferente y gzip entonces apenas cremalleras lo diferente.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: