Um arquivo com nome de arquivo longo dentro - unarchiver atinge o limite do sistema de arquivos e falha

2

Eu tenho um unarchiver que recebe um nome de arquivo e um nome de diretório e faz o dump de todos os arquivos desse arquivo para esse diretório. Nenhuma outra opção de linha de comando. No entanto, alguém compactou um arquivo no arquivo que estou querendo descompactar, com 500 caracteres no nome do arquivo, e agora esse programa falha quando atinge esse arquivo (praticamente todos os sistemas de arquivos têm um limite de 256). Que alternativa eu tenho, além de alterar o código-fonte e recompilar o unarchiver?

Eu preciso montar algo como um diretório, o qual pegaria os arquivos que o unarchiver está escrevendo, e os despejaria em outro lugar - possivelmente até como um arquivo grande. Esse algo não deve enviar mensagens com falha, mesmo que alguma gravação realmente falhe.

Eu tentei montar um diretório como um arquivo - no entanto, esse diretório deve ter um sistema de arquivos subjacente e, em seguida, ele tem as mesmas limitações do FS original.

Eu também tentei usar um pipe - mas um pipe não pode ter argumentos depois dele (por exemplo, /pipe/reallylongfilename ). É algo assim possível?

O arquivo é um .zim . Eu estou usando a ferramenta zimdump da biblioteca OpenZim.

    
por Alex 28.06.2017 / 16:53

1 resposta

2

Se você conhece este nome muito longo, então você pode tentar editá-lo dentro do arquivo usando o editor hexadecimal (ou sed ?). Trabalhe com uma cópia para o caso de você precisar começar do zero.

Deixe o nome do arquivo do exemplo ser very-long-filename . Ângulos de ataque razoáveis:

  • very/long/filename ,
  • very//////filename ,
  • very0long-filename em que 0 indica caractere NULL ( 0x00 ),
  • very00000000000000 ( 0 como acima).

Em geral, não é aconselhável excluir caracteres (tornando o arquivo menor). Ele altera os deslocamentos importantes dentro do arquivo e provavelmente o corromperá.

Eu fiz um teste com um arquivo .zip . Eu admito que meu very-long-filename não foi muito longo. Eu consegui torná-lo mais curto e talvez esses métodos também funcionem para nomes que são muito longos. Em meu teste eu tive que editar dois fragmentos do arquivo porque cada nome de arquivo em .zip foi armazenado duas vezes .

Você usou a palavra "zipado", mas não declarou claramente qual é o seu arquivo. Seja o que for, espero que armazene nomes de arquivos em texto simples e você terá sucesso em editá-los. Boa sorte.

    
por 28.06.2017 / 19:22