tar: esto no parece un archivo tar

0

Dividí una carpeta enorme:

$ tar cvpf - somedir | split -b 50000m

... y luego transferí los archivos divididos a otro servidor y los fusioné:

$ cat x* > somedir.tar.gz

pero cuando intenté extraer el archivo, muestra errores:

$ tar xvf somedir.tar.gz
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Archive contains obsolescent base-64 headers
tar: Error exit delayed from previous errors

¿Cómo puedo transferirlo / extraerlo para que vuelva a ser carpeta? Gracias

usuario167043
fuente

Respuestas:

3
  1. No ha comprimido, así que no asigne un nombre al archivo de destino somedir.tar.gz: llámelosomedir.tar
    • esto no es realmente relevante para su problema; tar xvfsin embargo, debería haber funcionado
  2. Vuelva a verificar su transferencia (específicamente si se realiza a través de FTP) es binaria (y no una transferencia de texto)
  3. Finalmente, verifique que los archivos se hayan transferido correctamente
    • para esto, puede verificar los tamaños de los archivos secundarios de origen y destino
    • o incluso mejor, combine sus sumas MD5 en ambos lados (esto también verificará el punto 2)

Si ha verificado los puntos anteriores y las sumas MD5 coinciden en ambos extremos, primero debe intentar verificar su división. Entonces, ¿la unión y tar-tf funcionan en la máquina fuente?

Si su somedires muy grande, intente el flujo de trabajo con un directorio pequeño.
Úselo tar cvpfpara obtener un tarball simple primero, divídalo y pruebe después de volver a unirse.
Ahora, copie la división en su máquina de destino como antes y pruebe después de volver a unirse allí.
Esto debería acelerar la localización de su problema.

nik
fuente
Compruebo sumas MD5, está bien
user167043
1
Haría la suma md5 antes de dividir y después de la captura.
fstx
1

No nombre su tarball concatenado somefile.tar.gz, ya que no está comprimido. Para evitar la tardetección automática de compresión confusa , realmente necesita nombrarla somefile.tar.

Citando del tarmanual de información:

El algoritmo de reconocimiento de formato se basa en "firmas", una secuencia de bytes especial [sic] al comienzo del archivo, que es específica para ciertos formatos de compresión. Si este enfoque falla, 'tar' recurre al uso del sufijo de nombre de archivo para determinar su formato ...

Entonces, lo que probablemente esté sucediendo es que su tarball no comienza con ninguna de las firmas de los métodos de compresión conocidos, por lo tarque recurre al uso del nombre de archivo para determinar la compresión. En su caso, el nombre termina con .gz, por lo que supone una gzipcompresión. Esto lleva a los errores que está recibiendo, ya que el archivo no está realmente comprimido.

tl; dr: Nombra el tarball con el .tarsufijo, no .tar.gz.

Steven Monday
fuente
Cuando tarno puedo determinar el formato en función de las firmas [sic] en el encabezado del archivo, generalmente he encontrado que el archivo está dañado; nombrar con diferentes extensiones nunca ha ayudado realmente. Obtener el archivo de formato correcto siempre ha ayudado.
nik