tar: Esto no parece un archivo tar

tar: Esto no parece un archivo tar

Dividí una carpeta enorme:

$ tar cvpf - somedir | split -b 50000m

… y luego transfirí 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 a una carpeta nuevamente? gracias

Respuesta1

  1. No ha comprimido, así que no le dé un nombre al archivo de destino somedir.tar.gz; llámelosomedir.tar
    • Esto no es realmente relevante para su problema; tar xvfde todos modos debería haber funcionado.
  2. Vuelva a verificar que su transferencia (específicamente si se realiza a través de FTP) sea 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 del lado de origen y de destino.
    • o incluso mejor, haga coincidir 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, ¿funcionan join y tar-tf en la máquina fuente?

Si su directorio somedires muy grande, pruebe 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.

Respuesta2

No nombre su tarball concatenado somefile.tar.gz, ya que esnocomprimido. Para evitar confusión con tarla detección automática de compresión, realmente es necesario ponerle un nombre somefile.tar.

Citando el tarmanual de información:

El algoritmo de reconocimiento de formato se basa en "firmas", secuencias de bytes especiales [sic] al comienzo del archivo, que son específicas para ciertos formatos de compresión. Si este enfoque falla, `tar' recurre al uso del sufijo del nombre del 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 que tarrecurre al nombre del archivo para determinar la compresión. En su caso, el nombre termina en .gz, por lo que se supone gzipcompresión. Esto conduce a los errores que obtienes, ya que el archivo en realidad no está comprimido.

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

información relacionada