(Внимание, примеры изображений слегка NSFW; татуировка показывает немного сиськи. )

Ранее у меня был dmg для Mac OS X и я использовал DropBox на двух компьютерах. Я бы добавил в мой безопасный sparse-bundle, который был в моей папке DropBox. Затем однажды я зашел на другой компьютер, он заметил, что были внесены изменения, и сделал то, что должен, синхронизировал разреженный пакет.

Оба разреженных изображения были повреждены. Очевидно, данные ветвления ресурсов Mac OS X или другие метаданные были потеряны или не сохранены. Сейчас я использую DropBox только для простых форматов и не буду доверять ему для синхронизации нескольких компьютеров, кроме .txt, .jpg, .png и подобных. Каким-то образом мне удалось восстановить некоторые файлы, выбрать и проколоть "полосы" в sparse-bundle и, по крайней мере, заставить sparse-bundle открыться и пройти проверку безопасности. ~ 90% файлов в хорошем состоянии, ~ 10%, пока я не смог их найти, открыв их.

Образцы изображений, которые используются в следующих тестах ... http://dl.dropbox.com/u/340087/drops/05.14.11/DSC02322-bad.jpg http://dl.dropbox.com/u/340087/drops/05.14.11/DSC02322-good.jpg

Вот что я знаю до сих пор:

DSC02322-bad.jpg
DSC02322-good.jpg

Ни одно приложение не откроет файл 'DSC02322-bad.jpg'. Даже терминальные команды, такие как cat , head , tail и другие, показывают его так, как будто он пуст.

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

(Контрольные суммы md5 разные, файлы действительно разные. )

Размеры файла одинаковы:

-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

Если я сделаю более глубокий список файлов, как показано ниже, размер файла останется прежним, но метаданные будут другими ...

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 

Вот вывод file обоих файлов

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

Это расстраивает меня полностью: Копировать файл в «г-copy.txt», совать его с file то cat файл , который появляется пустой cat еще размер файла еще 2178036 байт.

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

Другие вещи, которые я пробовал:

$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 )

Ни один из файлов не имеет разветвлений ресурсов, похоже, что DropBox обнулил их, и ответвление данных на обоих «кажется» идентичным мне. Все , что я могу сделать , это определить файлы отличаются из-за неправильные md5 матч и diff но нормального файл информация размера и других тестов делают их «появляются» идентичны. Дублирование файла ничего не дает. Я уверен, что мне нужно только добавить обратно в произвольные данные заголовка jpg, но я не уверен, какие инструменты лучше всего использовать для этой задачи, или какие данные добавить. У меня есть резервные копии этих конкретных файлов, и они не так уж важны, но есть и другие, не все jpg, такие как файлы flv и проприетарные документы, которые мне нужно вернуть, чего я больше не могу. Многие из них слишком стары, чтобы их можно было восстановить с помощью DropBox.

Играя в различных приложениях, которые могут читать данные в формате jpg, единственная ошибка, которую я получаю, имеет небольшой смысл:

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

Некоторые последние попытки были сделать небольшой jpg, 1x1 px и добавить / добавить данные в плохой файл в надежде, что данные заголовка позволят мне открыть файл, скопировать его в новый документ и сохранить чистую копию. Пока что это не сработало.

Я загрузил в imgur и несколько других сервисов обмена изображениями, все они выдают ошибку с поврежденным сообщением файла. У меня не было возможности попробовать прочитать файл с помощью php или другого языка сценариев, который может дать мне более конкретные сообщения об ошибках. Графический конвертер получает самое близкое сообщение о том, что файл поврежден, фактически показывает мне ветвь данных и позволяет мне попытаться угадать лучший сценарий открытия файла. Я все еще ничего не получаю в конце.

Это все, на что я способен в сегодняшних проблемах. Пока я не приложил к этому массу усилий, но скоро это станет войной, в которой мне придется победить :) Есть предложения?

Я был бы рад узнать, что приложение CLI способно, по крайней мере, показать мне, каковы эти 2178036 байтов.

Что ж, похоже, что diff по крайней мере, немного умный, не то чтобы он мне очень помог на этом этапе:

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

Предложения? Спасибо всем.

1 ответ1

1

Ваш DSC02322-bad.jpg имеет 2178036 нулевых байтов (то есть 2178036 однобайтовых нулей):

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

Ваш DSC02322-good.jpg содержит 2178036 байт данных JPEG. В DSC02322-bad.jpg как ничего не осталось.

Кстати, команда file говорит "data", когда не знает, что еще сказать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .