最后更新:2006-07-16 版本:2.0.0.716
badcopy - 从不良的存储介质中复制文件
|
badcopy 主要用于从包含物理损伤的存储介质中尽力挽救数据。从损伤严重度上,可以把 badcopy 要面对存储介质分为 2
类: 1. 完好或轻度损伤 存储介质中只有个别扇区受到了轻微损伤,通过反复尝试读取这些扇区,能够完整地复制文件内容。可以通过 “-retry” 参数定义尝试反复读取的次数(默认不反复读取)。 2. 严重损伤 存储介质中存在完全无法恢复的扇区,这种情况下,文件仍然被复制。那些无法读取的数据块将使用用户定义的字节填充(默认为0)。 在尝试对存在严重损伤的介质进行恢复时,“-block” 参数决定了恢复的效率。默认情况下,badcopy 每次尝试读取一个扇区的内容(扇区的尺寸取决于正在访问的存储介质),在尝试了“-retry”指定的次数后,如果某个扇区的内容仍然无法读出,则该扇的内容将由填充字节取代,badcopy 继续尝试读取下一个扇区。 存储介质上的坏块通常是连续存在的,并且每次设备返回访问错误前,通常会尽力尝试读取数据(在CD/DVD-ROM上,光驱每次要尝试大概15秒左右才会返回读取错误)。这两个特性使得某些场合下,逐扇区尝试的代价过高。这时用户可以通过 “-block” 参数定义每次尝试读取的扇区数。 正如前文所述,增大这个值获得的效率提升是以降低潜在精确度为代价的。例如:当使用“-block=10”时,将每次尝试读取10个扇区的内容,这10个扇区中只要有任意一个为坏扇,所有这10个扇区在目标文件中都将被填充。不过,由于坏块通常是连续分布的,出现这种情况的可能性很小。 |
1. 流媒体 对于流媒体之类(VCD、DVD、RM、AVI等等)尺寸庞大,并且对错误不敏感(对于DVD来说,烂掉2MB数据只不过在电影的某一瞬间产生一点毛刺而已)的文件,建议把block值设的大一点(对于DVD来说,512是个不错的选择,VCD和一般的AVI、RM可以设成128)。作为参考,对于 DVD-D5 格式(2小时/4GB)来说,节目每秒钟平均占用300个扇区的存储空间。对于DVD-D9 格式(2小时/8GB)来说是 600 个扇区。 badcopy 的设计初衷就是高效地为LP(那时还是GF)高效地复制D版DVD ^_^。 2. 有代价的容错格式 是指丢失的数据对文件有较明显的影响,静态图像(jpg、png等);文档(txt、doc、ppt等);打包文件(zip等)都属于此类情况。这种文件要求尽可能的精确复制。推荐block使用默认值(1)、retry使用2到3。 3. 携带冗余再生信息的文件格式 文件在编码时已经考虑到了数据丢失问题,并提供了某种程度上的再生算法和用于重建的冗余数据。例如rar打包格式中的“恢复记录”选项。这类格式使用额外的信息确保能够容忍少量数据丢失,对于较小的文件,全部使用默认选项恢复即可(block为1, retry为0);对于较大的文件(用于恢复的冗余数据也较多),可以适当增大block的值(如:30)。 特别说明:对于用crypto加密过的文件,其数据恢复能力取决于文件的原始格式。crypto本身能够对不完整的数据进行解密,解密后的数据如果带有冗余再生信息,该信息仍然有效。 4. 完全不容错的格式 例如可执行文件(.exe, .dll)等。这种文件的大部分内容都不允许有任何错误。使用默认的block和较高的retry值尝试。 ■注意■ 如果您正在尝试从硬盘中恢复非常重要的数据,请不要使用 badcopy。您应当在出现故障后的第一时间关闭计算机,并将硬盘送往专业数据恢复机构。 |
D:\product\BadCopy\vc_msw> #badcopy.exe ============================================================================== BadCopy 2.0.0.716 by BaiYang / 2004 - 2006, Freeware ============================================================================== Copy file from incorrect storage media. [USAGE]: badcopy srcpattern destdir [Options] ============================================================================== Options: -block: - specify how many sectors should be read one time. the actual size of the sector is vary from different storage media type. DEFAULT: one sector per step. -offset: - sector position to start copy, DEFAULT: 0 -retry: - retry times, DEFAULT: 0 -fill: - specify the fill value for bad sectors, DEFAULT: 0x00 -append - don't overwrite the destination file, instead of it, append new to the end of file. DEFAULT: if '-offset'=0 then overwirte, else: append NOTE: if this switch is specified and "-offset" is 0 (as the default), also the target file size is multiple of the source device's sector size, then "-offset" will be adjusted to continue the last copy process. -s - include sub directories. -logfile: - using a logfile. -loglevel - specify the lowest logging level, could be: DebugOnly (Most Detail) Info Warning (DEFAULT) Error FatalError Disabled (Close Logging Output) ============================================================================== Following Digital Representaion are recognized: Hexadecimal, Prefix: 0x, 0X, x, X Octal, Prefix: 0 Binary, Prefix: 0b, 0B, b, B Decimal, Prefix: NONE (1-9) ============================================================================== Examples: badcopy D:\*.AVI C:\TEMP /fill=0xFF /block:8 badcopy D:\src.dat C:\recovery -offset:1502 -retry:3 -fill:B10101010 badcopy my.rm c:\temp /append |
C:\Documents and Settings\Administrator> #badcopy ============================================================================== BadCopy 2.0.0.716 by BaiYang / 2004 - 2006, 免费软件 ============================================================================== 从存在故障的存储介质中复制文件 [用法]: badcopy 源文件通配符 目标目录 [选项] ============================================================================== 选项: -block: - 指定每次读取多少个扇区,扇区的尺寸随存贮介质的不同而变化。 默认值: 每次一扇区 -offset: - 从指定的偏移(扇区数)开始复制文件。默认: 0 -retry: - 重试次数。默认: 0 -fill: - 指定无法读取内容的填充值。默认: 0x00 -append - 将新读取得内容追加到目标目录中的同名文件(而不是覆盖它)。 默认: 如果 '-offset' 为 0 则覆盖,否则追加 注意: 如果指定了此开关,并且 '-offset' 为 0 (默认情况),同时 目标文件的尺寸为源设备扇区尺寸的正倍数,则将继续上次未完成的复 制过程(将 '-offset' 自动调整为从上次中止的位置继续)。 -s - 包含子目录 -logfile: - 使用指定的日志文件 -loglevel - 知道日志文件的详细程度,可以是: DebugOnly (最详细) Info Warning (默认) Error FatalError Disabled (禁用日志输出) ============================================================================== 参数接受以下数值表示法: 十六进制,前缀: 0x, 0X, x, X 八进制, 前缀: 0 二进制, 前缀: 0b, 0B, b, B 十进制, 前缀: 无 (1-9) ============================================================================== 使用示例: badcopy D:\*.AVI C:\TEMP /fill=0xFF /block:8 badcopy D:\src.zip C:\recovery -offset:1502 -retry:3 -fill:B10101010 badcopy my.rm c:\temp /append |