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
- 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 xvf
de todos modos debería haber funcionado.
- Esto no es realmente relevante para su problema;
- Vuelva a verificar que su transferencia (específicamente si se realiza a través de FTP) sea binaria (y no una transferencia de texto)
- 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 somedir
es muy grande, pruebe el flujo de trabajo con un directorio pequeño.
Úselo tar cvpf
para 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 tar
la detección automática de compresión, realmente es necesario ponerle un nombre somefile.tar
.
Citando el tar
manual 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 tar
recurre al nombre del archivo para determinar la compresión. En su caso, el nombre termina en .gz
, por lo que se supone gzip
compresión. Esto conduce a los errores que obtienes, ya que el archivo en realidad no está comprimido.
tl;dr: Nombra el tarball con el .tar
sufijo, no .tar.gz
.