(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.