(警告,样本图片略微不适合工作场所;纹身露出了一点乳房。)
以前,我有一个 Mac OS X 稀疏包 dmg,并在两台计算机上使用了 DropBox。我会将其添加到 DropBox 文件夹中的安全稀疏包中。然后有一天,我去了另一台计算机,它注意到已经进行了更改,并做了它应该做的事情,同步了稀疏包。
两个稀疏包图像都已损坏。显然,Mac OS X 资源分支数据或其他元数据已丢失,或未存储。我现在只将 DropBox 用于简单格式,并且不会信任它用于除 .txt、.jpg、.png 和类似文件之外的多台计算机同步。不知何故,我能够恢复一些文件,挑选稀疏包中的“带”,至少让稀疏包打开并通过安全检查。约 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 我 工作人员 2178036 2009 年 5 月 26 日 DSC02322-bad.jpg -rw-r--r--@ 1 我 工作人员 2178036 5月 14 23:26 DSC02322-good.jpg
如果我对文件进行如下的更深入的列出,文件大小仍然相同,但元数据不同......
2128 -rw-r--r--@ 1 我工作人员 2178036 2009 年 5 月 26 日 DSC02322-bad.jpg com.apple.metadata:kMDItemWhereFroms 179 2128 -rw-r--r--@ 1 我 工作人员 2178036 5月 14 23:26 DSC02322-good.jpg com.apple.metadata:kMDItemWhereFroms 145 com.apple.quarantine 42
以下是file
两个文件的输出列表
$文件 DSC02322-* DSC02322-bad.jpg:数据 DSC02322-good.jpg:JPEG 图像数据,EXIF 标准 2.21
这让我完全困惑:将文件复制到“z-copy.txt”,用 戳它file
,然后cat
文件看起来是空的,cat
但文件大小仍然是 2178036 字节。
我@macbook:\$cp DSC02322-bad.jpg z-copy.txt 我@macbook:\$file z-copy.txt z-copy.txt:数据 我@macbook:\$cat z-copy.txt $ls-la z-复制.txt -rw-r--r--@ 1 我 工作人员 2178036 5月 15 00:01 z-copy.txt
我尝试过的其他方法:
$cat DSC02322-bad.jpg > 再次尝试.txt -rw-r--r--@ 1 我 工作人员 2178036 5月14日 23:53 DSC02322-bad.jpg -rw-r--r--+ 1 我 工作人员 2178036 5月 15 00:04 try-again.txt $cat 重试.txt (返回一个空行)
这两个文件都没有资源分支,DropBox 似乎已删除了它们,并且两个文件上的数据分支在我看来“似乎”相同。我所能做的就是确定文件是由于不md5
匹配和而不同的diff
,但是正常的文件信息大小和其他测试使它们“似乎”相同。复制文件没有任何帮助。我很确定我只需要添加回任意 jpg 标头数据,但不确定什么工具最适合用于此任务,或者要添加什么数据。我确实有这些特定文件的备份,它们并不是那么重要,但还有其他文件(不是所有 jpg),比如 flv 文件和专有文档,我需要恢复它们,但我再也无法恢复它们了。许多文件太旧了,甚至 DropBox 都无法恢复。
在尝试各种可以读取 jpg 文件数据的应用程序时,我遇到的一个有点有意义的错误是:
无法放置文档“DSC02322-bad.jpg”,因为 JPEG 标记段 长度太短(文件可能被截断或不完整)。
最后的努力是制作一个 jpg 大小的 1x1 像素图片,并将数据附加/添加到坏文件中,希望标题数据能让我打开文件,将其复制到新文档中,并保存一份干净的副本。到目前为止,这还没有奏效。
我已将图片上传到 imgur 和其他一些图片共享服务,它们都出错并显示文件损坏消息。我还没有机会尝试使用 php 或其他脚本语言读取文件,这些语言可能会给我更具体的错误消息。Graphic Converter 最接近,告诉我文件已损坏,实际上向我显示了数据分叉,并允许我尝试猜测打开文件的最佳情况。最后我还是一无所获。
这就是我今天在故障排除方面所擅长的一切。到目前为止,我还没有投入大量精力,但这很快就会成为一场我必须赢得的战争 :) 有什么建议吗?
我很高兴知道哪个 CLI 应用程序至少能够向我展示这 2178036 字节是什么。
嗯,看起来diff
至少有点聪明,但在这一点上它对我帮助不大:
$差异 DSC02322-* 二进制文件 DSC02322-bad.jpg 和 DSC02322-good.jpg 不同
有什么建议吗?谢谢大家。
答案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
您的文件包含 2178036 字节的 JPEG 数据。由于没有剩余内容,因此DSC02322-good.jpg
无需修复。DSC02322-bad.jpg
顺便说一句,file
当命令不知道该说什么时,它会说“数据”。