Eu tenho um .rar
arquivo multipartes que contém um único .tar.gz
arquivo (não pergunte o porquê, foi assim que foi feito). Faltam algumas partes, mas tenho a primeira. Eu gostaria de extrair o .tar.gz
máximo possível. Como eu posso fazer isso?
Se eu rodar unrar x -kb file.part1.rar
, sempre extrai o início do .tar.gz
from part1
e para com um erro. Fico feliz em experimentar qualquer ferramenta (não precisa ser unrar).
data-recovery
compression
tar
rar
winrar
Alex I
fonte
fonte
Respostas:
Eu tinha uma coisa semelhante no Windows , quando eu tinha partes 1,5,6,9,10 de 10. Eu estava faltando partes 2,3,4,7,8.
use 7zip para extrair as partes que você possui e renomeie-as de acordo. ou seja: pt1 pt5 pt6, etc.
gere um arquivo nulo (zero) para preencher as partes ausentes, usando o tamanho exato em bytes de cada uma das partes que você possui e extraiu (ou seja, tamanho de pt1 que é igual ao tamanho de pt5 e pt6 ...):
no meu caso eu usei:
concatenar os arquivos (usando o / b para arquivos binários)
No meu caso:
quando isso foi feito, carreguei o arquivo no cliente bittorrent do Deluge e verifiquei novamente, e estava faltando apenas a porcentagem que realmente não tinha, o que significa que o cliente bittorrent identificou que tenho as informações verdadeiras entre todos os zeros que eu adicionado.
fonte
7z %file
tenta carregar todos os arquivos de peça e retorna um erro se um deles já estiver ausente. O que a coisa toda tem a ver com torrents? Posso extrair os arquivos compactados originais individuais do binário concatenado usando o Deluge?Provavelmente isso não é mais relevante, mas acabei de ter o mesmo problema e encontrei uma solução simples que funcionou para mim e achei que seria bom compartilhar.
Eu tinha um arquivo RAR protegido por senha em 6 partes, mas part4 estava ausente. Tentei usar a função "reparo" do WinRAR, mas ele disse que não conseguia encontrar o registro de recuperação. Eu tentei os métodos acima, mas eles não funcionaram e a extração sempre parava onde a parte ausente começava.
Por fim, decidi enganar o WinRAR para pensar nas partes 5 e 6 em um arquivo diferente e renomeei-o como "archive.part1.rar" e "archive.part2.rar". Em seguida, disse ao WinRAR para extrair a nova parte 1 e, apesar de receber uma mensagem de erro dizendo que não foi possível extrair o arquivo que terminou no início da nova parte 1 (pois estavam faltando alguns dados da parte 4), conseguiu extrair todos os outros arquivos das partes originais 5 e 6.
Espero que isso ajude outras pessoas com o mesmo problema no futuro.
fonte
Presumo 100Mb partes, parte 3 em falta. Podes tentar
Também eu tentaria, o que poderia funcionar melhor e fazer o WinRar pensar, o arquivo está corrompido:
fonte
cat blubb.rar | unrar > file.tgz
.Etapa 1: renomeie os arquivos, por exemplo:
Etapa 2: use o 7-Zip para extrair cada arquivo.
Lucro!
(Em algumas circunstâncias, renomear é desnecessário e você pode deixar o 7-Zip extrair todos os arquivos para você.)
fonte
Eu tinha apenas a segunda parte do arquivo rar de duas partes, enquanto a descompactação da parte 2, como esperado, o winrar exibiu uma mensagem dizendo que a primeira parte estava faltando; Também notei que o conteúdo completo da parte dois havia sido descompactado na pasta; portanto, sem tocar na mensagem pop-up do winrar, copiei os arquivos descompactados para outra pasta e cliquei em fechar na mensagem pop-up do winrar; o conteúdo descompactado foi excluído pelo winrar, mas como eu os copiei anteriormente em uma pasta diferente, eu poderia usar o conteúdo descompactado dessa pasta diferente.
fonte
O 7-zip extrairá a parte de um arquivo de um rar de várias partes e você poderá costurá-las novamente com o dd. Por exemplo, se você possui a primeira e a última parte rar:
Se o deslocamento que você precisa procurar não for primo, use um tamanho de bloco maior que um.
dd
pode apenasseek
para múltiplos do tamanho do bloco de saída.dd
realmente fazread
ewrite
chama o sistema com esse tamanho de bloco, entãobs=1
é realmente péssimo.Um grande
ibs
(tamanho do bloco de entrada) economizaria metade do tempo da CPU, uma vez queseek
está em unidades deobs
(tamanho do bloco de saída). Ou talvez haja alguma outra ferramenta que possa procurar uma posição arbitrária de bytes e, em seguida, executar E / Ss de tamanho normal. Ou, se você estivesse escrevendo isso, poderia dd combs=1
alinhamentos de até 32k, talveztail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))
fonte