tar
limita os nomes dos arquivos para 256 bytes (com extensões GNU). Os sistemas de arquivos Linux suportam pelo menos 256 bytes por nome de arquivo. Isso significa que qualquer arquivo compactado por tar
pode ser extraído sem erro. Então eu suponho duas causas:
-
O tarball está corrompido, confira:
$ tar -tvf tarball.tar
Você verá alguns erros, se houver algum.
-
Você usa um sistema de arquivos "virtual", como fusecompress ou ecryptfs (com criptografia / criptografia de arquivos seletivos) e seu nome de arquivo é um pouco menor ou igual ao limite do sistema de arquivos. O truque é quando você monta um diretório com o fusecompress (por exemplo) e cria um nome de arquivo
foo.bar
o sistema de arquivos virtual cria um arquivo chamadofoo.bar.gz
e compacta-o de forma transparente, mas oculta o nome real do arquivo. E se você criar um arquivo com um nome de 254 bytes, você receberá um erro porque ele tentará acrescentar um sufixo a ele.Nesse caso, simplesmente extrair o tarball fora do sistema de arquivos virtual deve ajudar:
$ sudo mkdir /home/${USER}-temp $ sudo chown $USER /home/${USER}-temp $ tar -xvf tarball.tar -C /home/${USER}-temp
De qualquer forma, tente rastreá-lo para obter mais informações:
$ strace -o tar-strace.log tar -tf tarball.tar
$ ltrace -o tar-ltrace.log tar -tf tarball.tar