(Внимание, примеры изображений слегка 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
Предложения? Спасибо всем.