Sugestões sobre como reparar arquivos corrompidos

0

(Atenção, as imagens de amostra são ligeiramente NSFW; o trabalho de tatuagem mostra um pouco de besteira.)

Anteriormente, eu tinha um dmg de pacote esparso do Mac OS X e usava o DropBox em dois computadores. Eu adicionaria ao meu pacote esparso seguro que estava na minha pasta DropBox. Então, um dia, fui ao meu outro computador, percebi que as mudanças haviam sido feitas e fiz o que deveria, sincronizei o pacote esparso.

Ambas as imagens do pacote esparso foram corrompidas. Aparentemente, os dados de bifurcação de recursos do Mac OS X ou outros metadados foram perdidos ou não são armazenados. Eu só uso o DropBox para formatos simples agora, e não vou confiar nele para múltiplas sincronizações de computador além de .txt, .jpg, .png e similares. De alguma forma, consegui restaurar alguns arquivos, escolher e cutucar as "bandas" no pacote esparso e, pelo menos, fazer com que o pacote esparso se abrisse e passasse a verificação de segurança. ~ 90% dos arquivos estão em boa forma, ~ 10% até o momento, não consegui chegar a lugar algum para abri-los.

Imagens de exemplo usadas nos testes abaixo ...      link      link

Aqui está o que eu sei até agora:

DSC02322-bad.jpg
DSC02322-good.jpg

Nenhum aplicativo abrirá o arquivo "DSC02322-bad.jpg". Até mesmo comandos de terminal como cat , head , tail e outros mostram como se estivessem vazios.

<pre>MD5 (DSC02322-bad.jpg) = 052b34d47cbcc64c208230d84098ceb3
MD5 (DSC02322-good.jpg) = a37995df587f7f146b8950199ecae544</pre>

(As somas de verificação md5 são diferentes, os arquivos são realmente diferentes.)

Os tamanhos dos arquivos são os mesmos:     

-rw-r--r--@  1 me  staff  2178036 May 26  2009 DSC02322-bad.jpg
    -rw-r--r--@  1 me  staff  2178036 May 14 23:26 DSC02322-good.jpg

Se eu fizer uma lista mais detalhada dos arquivos como abaixo, ainda o mesmo tamanho de arquivo, mas os metadados são diferentes ...     

2128 -rw-r--r--@ 1 me  staff  2178036 May 26  2009 DSC02322-bad.jpg
        com.apple.metadata:kMDItemWhereFroms        179
    2128 -rw-r--r--@ 1 me  staff  2178036 May 14 23:26 DSC02322-good.jpg
        com.apple.metadata:kMDItemWhereFroms        145
        com.apple.quarantine         42 

Aqui está uma saída de listagem file dos dois arquivos     

$file DSC02322-*
    DSC02322-bad.jpg:  data
    DSC02322-good.jpg: JPEG image data, EXIF standard 2.21

Isso me deixa totalmente confuso: Copie o arquivo para 'z-copy.txt', coloque-o com file e, em seguida, cat do arquivo que aparece vazio para cat , mas o tamanho do arquivo ainda é 2178036 bytes.     

me@macbook:\ $cp DSC02322-bad.jpg z-copy.txt
    me@macbook:\ $file z-copy.txt
    z-copy.txt: data
    me@macbook:\ $cat z-copy.txt
    $ls -la z-copy.txt
    -rw-r--r--@ 1 me  staff  2178036 May 15 00:01 z-copy.txt

Outras coisas que eu tentei:     

$cat DSC02322-bad.jpg > try-again.txt
    -rw-r--r--@  1 me  staff  2178036 May 14 23:53 DSC02322-bad.jpg
    -rw-r--r--+  1 me  staff  2178036 May 15 00:04 try-again.txt
    $cat try-again.txt
    ( Returns an empty line )

Nenhum arquivo tem forks de recursos, o DropBox parece ter eliminado esses, e a bifurcação de dados em ambos 'parece' idêntica a mim. Tudo o que posso fazer é determinar que os arquivos são diferentes por causa do md5 mis-match e do diff , mas o tamanho normal das informações do arquivo e outros testes fazem com que eles pareçam 'idênticos'. Duplicar o arquivo não ajuda em nada. Eu tenho certeza que eu só preciso adicionar de volta em dados arbitrários de cabeçalho jpg, mas não tenho certeza quais ferramentas são melhores para usar para essa tarefa, ou quais dados adicionar. Eu tenho backups desses arquivos em particular, e eles não são tão importantes, mas há outros, não todos os jpg, como arquivos flv e documentos proprietários que preciso recuperar, o que não posso mais fazer. Muitos são muito antigos para serem recuperados pelo DropBox.

Brincando em vários aplicativos que podem ler dados de arquivos jpg, o único erro que sinto é o seguinte:     

Could not place the document ‘DSC02322-bad.jpg’ because a JPEG marker segment
    length is too short (the file may be truncated or incomplete).

Alguns últimos esforços foram fazer um pequeno jpg, 1x1 px e acrescentar / pré-anexar os dados ao arquivo inválido na esperança de que os dados do cabeçalho me permitissem abrir o arquivo, copiá-lo em um novo documento e salvar um cópia limpa. Até agora isso não funcionou.

Enviei para imgur e alguns outros serviços de compartilhamento de imagens, todos eles com uma mensagem de arquivo corrompida. Eu não tive a chance de tentar ler o arquivo com php ou alguma outra linguagem de script que pode me dar mensagens de erro mais específicas. O Conversor gráfico fica o mais próximo possível, informando que o arquivo está corrompido, na verdade mostra a bifurcação de dados e permite que eu tente adivinhar um cenário ideal para abrir o arquivo. Ainda não recebo nada no final.

É tudo sobre o que sou bom na solução de problemas de hoje. Eu não coloquei muito esforço nisso ainda, mas logo se tornará uma guerra na qual eu terei que vencer :) Alguma sugestão?

Eu ficaria feliz em saber o que o aplicativo CLI é capaz de ao menos me mostrar quais são esses 2178036 bytes.

Ah, bem, parece que diff está sendo um pouco esperto, não que isso me ajude muito neste momento:     

$diff DSC02322-*
    Binary files DSC02322-bad.jpg and DSC02322-good.jpg differ

Sugestões? Obrigado a todos.

    
por user17245 17.05.2011 / 06:44

1 resposta

1

Seu arquivo DSC02322-bad.jpg é 2178036 nul bytes (isto é, 2178036 zeros de byte único):

$ hexdump DSC02322-bad.jpg 
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0213bf0

Seu arquivo DSC02322-good.jpg é 2178036 bytes de dados JPEG. Não há nada para reparar em DSC02322-bad.jpg , já que não sobra nada.

A propósito, o comando file diz "data" quando não sabe mais o que dizer.

    
por 17.05.2011 / 07:11

Tags