有时用GHOST备份失败,可能文件出了什么问题。。。
就自己写了个程序 TOdisk 成功地备份了。。
用扇区方式备份硬盘或分区或任意扇区。。。
支持压缩和分卷,扩展分区,连续任务。。。等等。。
希望大家有空试玩。。。
说明如下:
硬盘全真备份恢复器 ==TOdisk ==(扇区模式)
版本:1.1 alpha
运行环境: DOS / WIN9x DOS 窗口 (如加载UDMA驱动,可能运行反常)
TOdisk version 1.0 Alpha Copyright (c) 2006 by GOTOmsdos
Email: tdaim@sina.com
Syntax:
<DO mode>
TOdisk SRC1[,SRCn...] TO DST1[,[DSTn...] [-[[d|p][q][m][n][ir][iw]]]
<LOOK mode>
TOdisk [-D[n]|-P[[noz|noh|nozh|fn|f|l]|[n:n|A:]]]
SRC/DST set: (DISK set, PARTITION set, DOSLETTER set, IMAGEFILE set)
1, DISK set >> 1 or 2...n
2, PARTITION set >> 1:2 or 2:3...n:n
3, DOSLETTER set >> C: or D:... Z:
4, IMAGEFILE set -- (c:\image.to)
--------------------(c:\image.to=Vn)
--------------------(c:\image.toz=Cn=K=Vn=E?) <压缩>
<镜象文件名,如不压缩建议后缀为to, 如压缩建议后缀为toz, 以免跟其他文件名混淆,不过程序并不强制这样)
IMAGEFILE:
Cn - C:compress n:compress level(1-9)
K - key for compress required
Vn - V:volume n:every volume MBs
E? - E:key for compress to "EVERY" volume ?:prompt for key
Switch:
-d|-p: DISK|PARTITION MODE (strictly matched mode)
(The following valid to ALL tasks):
-q: quiet mode(No question to you)
-m: mute(No information words)
-i: ignore(ignore read/write error,invalid to IMAGEFILE set)
-n: next(Go to next work if fatal error encountered)
in SRC/DST set
- : specify start sector
+ : specify sectors to do
but - not allowed in IMAGEfile set
Additional parameter set parameters
(Only used in SRC/DST set. Only valid to SINGLE task):
=q, =m, =i, =n
=q: quiet mode(No question to you)
=m: mute(No information words)
=i: ignore(ignore read/write error,not allowed in IMAGEFILE set)
=n: next(Go to next work if fatal error encountered)
additional parameter set parameters EXAMPLE:
1:2=q=m,3:4 TO (file=c)=n,4:1=i
Single-task Example:
1 TO 2
copy disk1 to disk2
1-100+1000 TO 2-200
at sector100 copy disk1 1000 sectors to disk2 at sector200
1:2 TO 2:3
copy disk1 partition2 to disk2 partition3
1:2-200+1000 TO 2:3-300
copy at sector200 disk1 partition2 to disk2 partition3 at sector300
1:2 TO (d:\backup.z=c9=k=v1000=e?)
backup disk1 partition2 to IMAGE file d:\backup.z
c9 - compress level9
k - Key
v1000 - Separate volume in 1000 MBs
E? - Prompt for key to every volume
Multi-task Example:
1:2,2:3-2345,3:4 TO (g:\12.z=c=v1000)+12345,4:1-3456,(i:\34.z=c9=v1000)
-d example:
1,2 TO 3,4 -d
== (1 TO 3 -d) and (2 TO 4 -d)
-p example:
1:2,4:3,2:2 TO 2:3,(d:\back.z=c),4:5 -p
== (1:2 TO 2:3 =p) and (4:3 TO d:\back.z=c -p) and (2:2 TO 4:5 -p)
additional parameter Example:
1:2,3:4 TO (file=c),2:2 -q -m -n -ir -iw
<LOOK mode>
-Dn show disk n info
-P show parition info
noz|nozero: not show zeroID partition
noh|nohidden: not show hidden partition
nozh|nozerohidden: not show zeroID and hidden partition
fn|fatntfs: show FAT and NTFS partition
f|fat: show FAT parition
l|linux: show linux parition
n:n 1:2 or 2:3...
A: C: or D:...Z:
Example:
-d show all drive
-d2 show drive 2
-p show all partition
-pfn show FAT and NTFS parition
-p2:3 show disk2 partition3
-pc: show C:
补充说明:
本程序:
采用的是扇区方式:
关于处理模式和速度:
GHOST 采用文件模式,即:只处理文件,不处理没有合法文件的数据,(所以,其实GHOST不是CLONE.是重整).这样,文件少的分区备份速度就快,,塞满文件的分区备份速度就慢(因为文件方式多了检索文件搜索文件的过程)而且,如果遇到有问题的文件,诸如簇链交错和无家可归的文件等等,还会终止程序。。。还有弱点是:用这种方式恢复的分区,不可能找回被删除的或丢失的文件,因为,没有合法文件的数据没有被保存.
GHOST 的 -ia 虽是用扇区方式,但是是拷贝 整个硬盘 或其全部分区,不能处理指定的某个分区,更不能处理任意指定的 某些扇区
。
-ial -ir 也大同小异。。
TOdisk 是采用扇区方式,就是完全的复制,这样,虽然速度没有文件方式快,但是确是全真方式.即一模一样,这才是真正的 CLONE.
其实,企业方式或者是极其重要的数据,应该是采用扇区方式.
×××××××××××××××××××××
特别建议:
1
本程序很适合备份塞满文件的分区。
2
由于是扇区方式,所以可以备份任何文件系统的 分区(包括LINUX等等。。。)
不过,如果要备份到镜象文件,镜象文件所在分区只能是FAT/FAT32.
××××××××××××××××××××××××××××××
骨干参数:
一 自由模式(没有 -d 和 -p 参数)
其实,这是却是少用的模式, 是精确到扇区的方式,可以任意指定要处理的起始扇区(前缀 是 - )和扇区操作数(前缀是 + , 小联想:
GRUB 也是用 + 表示要加载的数据块(扇区)的个数).
如:
1-100+200 表示 从硬盘1 的开始扇区100处执行 执行扇区数为200
文件参数也支持 + 操作符,但不支持 - 操作符.
技术上,是可以支持的,但是,要在文件的海量之处都作上记号,但这将极大的降低文件读取的速度
如:
(e:\back=c=v100)+1000 表示总共执行文件含有的总扇区的1000个扇区
如下非法:
(e:\back=c=v100)-1000 试图从文件含有扇区的第1000个扇区处执行,但非法.
这种模式对 RAW数据的恢复非常有用.也就是用尽了全部文件式数据恢复工具不能找到数据的情况下,就要借助于扇区模式了..
二 匹配模式(包括 硬盘模式(-d) 和分区模式 (-p))
这种模式最常用,尤其是 分区模式.
这种模式由于处理的是 格式数据(硬盘和分区),所以,要匹配,至少是原数据块要小于目标数据块(在这种情况下,如果是分区模式,除了
把源分区的分区ID,和80/00是否活跃标志共两处,两个字节更新到目标分区外,目前不支持更新分区的大小,这涉及到搬移其后的所有分
区!,而且,对于一般用户,用的较少,一般都是哪里来哪里去的,起到一个备份恢复作用..)
由于是格式匹配模式,所以不允许使用 - 和 + 操作符.
匹配模式 的 源参数和目标参数的个数必须相等,否则警告退出
匹配模式支持文件参数.
除了分区模式 要用源分区的 分区ID 和80/00 更新目标分区的分区表,
多任务的匹配模式 等价于自由模式的单任务的无 - + 的个数相同的一对一的集合:
比如:
1,2 TO 3,4 -d
等价于两次操作:
1 TO 3 -d
2 TO 4 -d
但不等价于
1,2 TO 3,4
除非1,3大小相同, 2,4大小相同
因为,自由模式是一种灵活的模式,前后任务是向续接替的
比如
硬盘1 总扇区 1000
硬盘2 总扇区 2000
硬盘3 总扇区 1500
硬盘4 总扇区 3000
1,2 TO 3,4
在自由模式 中,过程如下:
硬盘1 传递给 硬盘3 1000个扇区,退出 (硬盘1 完成任务)
硬盘2传递给 硬盘3 500个扇区,硬盘3 退出(硬盘3 完成任务)
硬盘2传递给 硬盘4 1500 个扇区 , 硬盘2 退出(硬盘2 完成任务)
程序便退出(因为 源和目标已经有一方完成了)
程序这样处理是考虑到 灵活性: 可能 使用者 可能并不确切的知道各个分区,硬盘的精确大小等等东西,但是又想完成前面的已经满足
条件的数据...
参数
硬盘参数:
1
执行为:
硬盘1 开始扇区0 处理扇区为整个硬盘的总扇区
分区参数:
1:1
执行为:
硬盘1 分区1的开始扇区 处理扇区为分区1的总扇区
DOS盘符参数:
C:
程序在分区表中找出其对应的分区,然后等同于分区参数
镜象文件参数
要用括号括起来()
完全的参数如下:
(d:\image=c9=k=v1000=e?) 用 = 号 连接
第一为文件名(8.3格式)
Cn C(COMPRESS) 压缩, 9 为压缩级别,(1-9)
K (KEY),表示压缩文件有密码. 默认没有密码,有K,表示要有密码,那么当程序创建压缩镜象时,会要求用户输入密码,以便下次用文件
恢复到硬盘前,也要用户输入密码,这是安全需要.
(但是,仅有K,只会对第一个压缩文件要求密码,如果有分卷,不会后面的分卷要求密码)
Vn V(Volume)表示有分卷功能, 在把硬盘数据存为分卷文件时,必须要用户指定每个分卷的大小(以MB为单位 ) n 表示 MB
V1000 表示 以每 1000MB为一卷
(补充: 当文件参数在 左边时,也就是源位置时, 如没有V, 程序将只处理一个文件,不擅自寻找是否有分卷(因为这样有可能自做主张
了. 如果 有 V, 将自动寻找其分卷,但只要给出 这个 V 即可,无需 n)
E? E (Eevry)表示对每个压缩的分卷要求密码,如果没有 ? , 程序会把第一文件(母卷)的密码都自动写入后面的分卷中.如果有 ? 表
示 对每个压缩的分卷文件要求密码,并且 停下来,等待用户输入.
LOOK mode
就是 看看硬盘和分区的信息
-D
查看全部硬盘
-Dn
查看第n硬盘
-P
查看全部分区
-Pnoz 或 -Pnozero
不显示分区ID为0x00 的分区
-Pnoh -Pnohidden
不显示隐藏分区
-Pnozh -Pnozerohidden
不显示分区ID为0x00和隐藏分区
-Pfn 或 -Pfatntfs
只显示FAT NTFS分区
-Pf 或 -Pfat
只显示FAT分区
-P:
只显示DOS下盘符(也就是非隐藏的FAT系列)
-Pl 或-Plinux
只显示 Linux分区
***************************************
**********************************************
关于 本程序 采用的压缩库 zllib
ZLIB 压缩比相当高 采用 优化高效的 LZ77 和 HUFFMAN 结合,DEFLATE方式
而且速度与同类的压缩库相比要快的多! (当然前面讲了 GHOST 采用的是文件模式,所以快,不是GHOST的压缩库块,而是它处理的数据
量小,如果比较压缩库,应该是与GHOST速度和压缩比差不多的..能达到平均每秒 1,2MB! )
*********************************
***********************************
本程序的局限性和待增加的功能:
由于是DOS程序, 文件参数只支持FAT系列的盘符
程序显示出的分区总表中的 DOS 盘符 是按照 DOS的盘符分配规律推测出的,不一定准确,
尤其是场合性的挂载额外的驱动器(如U盘,移动硬盘,虚拟盘等),仅作参考。但是表中显示的分区数字是没有问题的。
计划 加入 处理指定的镜象中的第几硬盘和第几分区
***************************************
***************************************************
几个有用的开关:
1 i|ignore ( ir|ignoreRead iw|ignoreWrite)
忽略磁盘的 读写错误, 这样的话,就不会因为较少的介质问题而终止整个程序。
2 q | quiet
不要提示,直接执行(但对诸如文件打不开等,仍然要跟你要文件名的。。等等)
3 n | next
当执行某个任务发现致命的错误时,不退出整个程序,继续执行下一个任务(但仍然根据前一个已完成的数据量对下一个任务的数据量作
更新)
4 m | mute
不显示信息
这四个参数的地点:
1
可在两种参数中给出
a
i 用在硬盘/分区/盘符参数组:(用 =连接)
如:
1=i TO 2 (忽略读硬盘1的错误,但不忽略硬盘2的写错误)
1:1 TO 2:3=i (忽略写硬盘2分区3的 写错误,但不忽略读硬盘1分区1的读错误)
e:=i TO 2:3=i (都忽略)
但是忽略开关(-i)不能用在文件参数中(因为文件不是设备。如果在读写文件的过程中DOS给出了错误,是不能忽略过的,程序会提示
你,重新输入文件名)
b -ir -iw 用在后面的独立之处(对全部任务起作用)
如:
1:2,E: TO 2:3,(BACK.TOZ=C) -ir -iw (忽略全部任务的读错误和写错误)
2 q | quiet (没有采用 y ,以免 跟后面的 n 混同,可能使使用者误以为 y 表示不给提示,n 表示给提示。。)
可以用在任何地方,包括文件参数组
如用在参数组(用 = 连接),仅对参数组起作用:
1:1=q,2:3 TO 2:4,3:4
(用于文件参数组时,必须在()之后):
1:1,(FILE.Z=v)=q TO 4:3,2:3
如用在后面的独立之处(用 - 连接),对全部任务起作用
3 n|next
可以用在任何地方,包括文件参数组
如用在参数组,仅对参数组起作用,
如用在后面的独立之处,对全部任务起作用
4 m|mute
可以用在任何地方,包括文件参数组
如用在参数组,仅对参数组起作用,
如用在后面的独立之处,对全部任务起作用
*********************
****************************
补充:
如果参数组中有 - + 操作符,那么
用在参数组中的以上的参数( i | ignore, q | quiet,m | mute, n | next) 必须放在 - 或 + 的后面:(当然,在 匹配模式 -d,
-p 中,本来就不能有- + 操作符,自然就不存在这个问题 )
1:1 TO 2:3-100+200=i
1:1 TO 2:3-100+200=q
1:1,2:3 TO 2:3-100+200=n,3:4
另:
以上四对参数可以连用:
1:1,2:3 TO 2:3-100+200=i=q=m=n,3:4
1:2,E: TO 2:3,(BACK.TOZ=C) -q -m -n -ir -iw
****************************************
***************************************
TOdisk-1.0a.rar:
[此贴子已经被作者于2007-3-17 23:48:09编辑过]