Suggestions sur la réparation de fichiers corrompus

(Avertissement, les images échantillon sont légèrement NSFW, le travail de tatouage montre un peu de boob.)

Auparavant, j'avais un dmg Mac OS X sparse-bundle et utilisé DropBox sur deux ordinateurs. Je voudrais ajouter à mon sparse-bundle sécurisé qui était dans mon dossier DropBox. Ensuite, un jour, je suis allé à mon autre ordinateur, il a remarqué que des changements avaient été apportés, et ont fait ce qu'il fallait, synchronisé le sparse-bundle.

Les deux images sparse-bundle ont été endommagées. Apparemment, les données de la fourchette de ressources Mac OS X ou d'autres méta-données ont été perdues ou ne sont pas stockées. Je n'utilise que DropBox pour des formats simples maintenant, et je ne le ferai pas confiance pour la synchronisation de plusieurs ordinateurs au-delà de .txt, .jpg, .png et similaire. D'une certaine façon, j'ai réussi à restaurer des fichiers, à choisir et à piquer sur les «bandes» dans le sparse-bundle et, au moins, obtenir le bloc-circuit pour ouvrir et passer la vérification de sécurité. ~ 90% des fichiers sont en bonne forme, ~ 10% jusqu'à présent, j'ai été incapable d'aller n'importe où pour les ouvrir.

Exemples d'images utilisées dans les tests ci-dessous … 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

Voici ce que je sais jusqu'ici:

DSC02322-bad.jpg DSC02322-good.jpg 

Aucune application n'ouvrira le fichier 'DSC02322-bad.jpg'. Même les commandes de terminal comme le cat , la head , la tail et d'autres le montrent comme s'il était vide.

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

(Les sommes de contrôle md5 sont différentes, les fichiers sont en effet différents.)

La taille des fichiers est la même:

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

Si je fais une liste plus approfondie des fichiers comme ci-dessous, toujours la même taille de fichier, mais les métadonnées sont différentes …

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

Voici un file répertoriant le résultat des deux fichiers

  $ Fichier DSC02322- *
     DSC02322-bad.jpg: données
     DSC02322-good.jpg: données d'image JPEG, norme EXIF ​​2.21 

Cela me dérange entièrement: Copiez le fichier sur 'z-copy.txt', appuyez dessus avec le file , puis cat le fichier qui apparaît vide pour le cat mais la taille du fichier est encore de 2178036 octets.

  Moi @ macbook: \ $ cp DSC02322-bad.jpg z-copy.txt
     Moi @ macbook: \ $ fichier z-copy.txt
     Z-copy.txt: données
     Moi @ macbook: \ $ cat z-copy.txt
     $ Ls -la z-copy.txt
     -rw-r-r - @ 1 me personnel 2178036 15 mai 00:01 z-copy.txt 

D'autres choses que j'ai essayé:

  $ Cat DSC02322-bad.jpg> try-again.txt
     -rw-r-r-@ 1 me personnel 2178036 14 mai 23:53 DSC02322-bad.jpg
     -rw-r-r - + 1 moi personnel 2178036 15 mai 00:04 try-again.txt
     $ Cat try-again.txt
     (Renvoie une ligne vide) 

Aucun fichier n'a de fourchettes de ressources, DropBox semble les avoir dérangé, et la fourchette de données sur les deux "apparaissent" identique à moi. Tout ce que je peux faire est de déterminer que les fichiers sont différents en raison de la mauvaise correspondance md5 et d'un diff , mais la taille normale des informations de fichier et d'autres tests les rendent «identiques». La duplication du fichier ne fournit rien d'utile. Je suis très sûr que je n'ai besoin que d'ajouter des données d'en-tête jpg arbitraires, mais je ne suis pas certain des outils à utiliser pour cette tâche ou des données à ajouter. J'ai des sauvegardes de ces fichiers particuliers, et ils ne sont pas si importants, mais il y en a d'autres, pas tous les jpg, tels que les fichiers flv et les documents exclusifs que je dois récupérer, ce que je ne peux plus. Beaucoup sont trop vieux pour pouvoir être récupérés par DropBox.

En jouant autour de diverses applications qui peuvent lire les données de fichier jpg, la seule erreur que j'avance qui a un peu de sens est:

  Impossible de placer le document 'DSC02322-bad.jpg' car un marqueur JPEG
     La longueur est trop courte (le fichier peut être tronqué ou incomplet). 

Certains efforts du dernier fossé ont été de faire un petit jpg, 1×1 px et d'ajouter / de préciser les données au mauvais fichier, espérant que les données d'en-tête me permettraient d'ouvrir le fichier, de le copier dans un nouveau document et d'enregistrer une copie propre. Jusqu'à présent, cela n'a pas fonctionné.

J'ai téléchargé pour imgur et quelques autres services de partage d'images, ils font tous des erreurs avec un message de fichier corrompu. Je n'ai pas eu la chance d'essayer de lire le fichier avec php ou un autre langage de script qui peut me donner des messages d'erreur plus spécifiques. Graphic Converter obtient le plus proche, me disant que le fichier est corrompu, me montre en fait la fourchette de données et me permet d'essayer de deviner un meilleur scénario pour ouvrir le fichier. Je n'ai encore rien à la fin.

C'est à propos de tout ce que je suis bon dans le dépannage d'aujourd'hui. Je n'ai pas encore mis beaucoup d'efforts à ce sujet, mais cela deviendra bientôt une guerre dans laquelle je devrai gagner 🙂 Des suggestions?

Je serais heureux de savoir ce que l'application CLI peut au moins me montrer ce que sont ces 2178036 octets.

Ah bien, on dirait que diff au moins, c'est un peu intelligent, et non pas qu'il m'appuie beaucoup sur ce point:

  $ Diff DSC02322- *
     Les fichiers binaires DSC02322-bad.jpg et DSC02322-good.jpg diffèrent 

Suggestions? Merci a tous.

Votre fichier DSC02322-bad.jpg est 2178036 nul bytes (c.-à-2178036 zéros à un seul octet):

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

Votre fichier DSC02322-good.jpg est 2178036 octets de données JPEG. Il n'y a rien à réparer dans DSC02322-bad.jpg car il ne reste plus rien.

En passant, la commande du file indique "données" quand il ne sait pas quoi dire autrement.