chenall 发表于 2010-8-14 20:30:46

发一个QGHO比较成熟的版本(2011-01-15全新的版本)

最新的版本请移步
http://chenall.net/post/QGHO/


新的版本下载介绍,请到二楼。。。


现在由于GRUB4DOS功能比较强大了,所以就重新作了一个版本.算是比较稳定成熟的版本.

有兴趣的朋友可以拿去研究完善一下(可以写一个WINDOWS GUI界面用于设置参数).
具体设置参数请看QGHO.SET和QGHO.LST文件.

[文件说明]
qgho.zip GHOST程序和GHOST执行脚本,可以根据需要进行修改,这里只是用了最简单的脚本.
qgho.bin QGHO启动镜像.
QGHO.LST grub4dos 启动菜单.
QGHO.SET QGHO配置文件,如果全部使用默认值,这个文件可以不使用
[功能]
快速自动备份还原系统.可手动强制备份/恢复.
主要是为了展示GRUB4DOS的功能.
[使用方法]
直接复制QGHO目录到某个硬盘的根目录下,在你的GRUB4DOS菜单中添加一个菜单
title QGHO
find –set-root /QGHO/QGHO.BIN
configfile /QGHO/QGHO.LST
一般情况下,你不需要修改任何东西即可直接使用.
默认自动备份第一激活分区到第一激活分区磁盘最后一个分区/QGHO_C.GHO.
你可以自己修改/QGHO/QGHO.SET来实现自定义的备份.
比如设定备份任意分区到任意目录.
没有磁盘限制,只要你定义的分区没有错就可以了.

[其它]
如果你对这个有兴趣的话,也可以编写一个GUI界面来修改QGHO.SET内容.
因为我对GUI不感冒,所以这些事我就不做了.

更新:
解决#2 zxw 和#6 ali88home 提到的问题.
另外,改进了一下,使用激活分区作为自动判断的依据(如果没有指定参数时),可以避免使用U盘或或其它方式启动出现的问题.

当然了,如果没有激活分区,也没指定参数,或者硬盘上有两个主分区,激活分区在第二分区上,都会出错.如果是这种情况的就不用试了.
有什么好的方案欢迎提出来.

2011-01-02更新内容请看这里。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=173800&page=5#pid2128300

下载地址:
http://dl.dbank.com/c0az9tcai0

[截图]
启动界面

显示参数信息.

开始备份.

[菜单文件]
供想学习GRUB4DOS的朋友使用,大部份都有注释,有什么不明白的可以提出来.
如果你有发现了错误麻烦通知我,谢谢.

default=0
timeout=5
#设置可执行程序的路径(外部命令)
command --set-path=(fd0)/bin/
debug off

#菜单0
title auto ghost\n\n\t\tQuick Ghost Ver: 0.3\t\t2010-08-16\n\n\tmade by chenall QQ:366840202\t\thttp://chenall.net
write 0x60000 1000 && fallback --go 3
kernel

#菜单1
title ghost_Backup\n\n\t\tQuick Ghost Backup\n\n\tmade by chenall QQ:366840202\t\thttp://chenall.net
write 0x60000 1001 && fallback --go 3
kernel

#菜单2
title ghost_Restore\n\n\t\tQuick Ghost Restore\n\n\tmade by chenall QQ:366840202\t\thttp://chenall.net
write 0x60000 1002 && fallback --go 3
kernel

#菜单3 隐式菜单
title
#定位QGHO.BIN主程序位置
cat --length=0 /QGHO/QGHO.BIN || find --set-root /QGHO/QGHO.BIN
map --mem /QGHO/QGHO.BIN (fd0)
map --hook

#复制GHOST.ZIP文件到内存盘
fat copy /QGHO/GHOST.ZIP (fd0)/DOS.ZIP

#设置默认变量参数,fallback 4当后续语句执行出错时跳到菜单4.
fallback 4
wenv set mode=pdump
wenv set dst_path=/sys_c.gho
#从文件中读取配置参数,如果文件不存在或读取错误,返回0,根据上面的fallback 3就跳到菜单3去执行
WENV read /QGHO/QGHO.SET

#如果有设置变量dst_chk就执行检测操作.并把找到的分区设置为dst_id
#这里使用了wenv和disk外部命令
wenv get dst_chk && wenv run find --set-root --ignore-floppies --ignore-cd ${dst_chk} && diskid && wenv set dst_id=*0x4ff00
wenv get src_chk && wenv run find --set-root --ignore-floppies --ignore-cd ${src_chk} && diskid && wenv set src_id=*0x4ff00
fallback --go 4

#菜单4 隐式菜单
title
#设置默认参数,默认备份第一个硬盘激活的分区到第一硬盘最后分区.
#find --set-root makeactive --status,定位到第一个激活的分区.
wenv get src_id || find --set-root makeactive --status && diskid && wenv set src_id=*0x4ff00

#没有指定dst_id,使用最后一个分区(第一个激活分区所在硬盘)
wenv get dst_id || find --set-root makeactive --status && root endpart && diskid && wenv set dst_id=*0x4ff00

wenv set dst=${dst_id}${dst_path}
#根据内存位置0X60000的值来确定是还原状态或者备份状态。(当使用菜单启动时)

#以下两句用于定位目标分区.
wenv run write (md)0x301+1 ${dst_id}\0

#diskid 命令gid=XX:YY 设定XX:YY对应的分区为当前root.XX:YY可以从内存中提取.这里取的是上一句写入的内存
diskid gid=*0x60200

#自动判断模式.
checkrange 1000 read 0x60000 && WENV run cat --length=0 ${dst_path} && WENV set mode=pload
checkrange 1001 read 0x60000 && wenv set mode=pdump
checkrange 1002 read 0x60000 && wenv set mode=pload

#写文件
wenv run write (fd0)/SETENV.BAT set mode=${mode}\r\n
#从指定位置开始写入0x10
wenv run write --offset=0x10 (fd0)/SETENV.BAT \r\nset src=${src_id}\r\n
wenv run write --offset=0x20 (fd0)/SETENV.BAT \r\nset dst=${dst}\r\n
#替换文件中路径的符号"/"为"\"
cat --skip=0x28 --locate=/ --replace=\\ (fd0)/SETENV.BAT
wenv run echo QGHO:${mode} ${src_id} <==> ${dst}
pause --wait=6 && chainloader (fd0)/io.sys
#直接启动DOS,也可以使用rootnoverify (fd0) 和 chainloader +1





[ 本帖最后由 chenall 于 2011-1-15 16:54 编辑 ]

chenall 发表于 2010-8-14 20:33:31

QGHO 最新版本作为MODBOOT的一个模块发布。

介绍就不写了,有兴趣的可以下载测试。。。

需要WENV的支持,复制WENV到MODBOOT\GRUB4DOS目录下就可以了。

新版的改进。

[*]支持多系统,多配置文件。[*]支持自定义恢复(支持一级子目录)
注:因为时间关系,没有经过完全的测试。请先用虚拟机测试。。


直接上图吧。最快速的GHOST备份、还原系统已经出炉。。

主菜单界面:(可以选择配置文件,当前使用的配置文件以来表示)



自定义恢复界面。



选择了其它分区。。



选择恢复目的分区。




确认。



正在恢复中。。。。



[ 本帖最后由 chenall 于 2011-1-15 17:20 编辑 ]

天涯海角1216 发表于 2010-8-14 20:43:45

支持大师的作品!很喜欢!

zxw 发表于 2010-8-14 22:26:03

grldr为2010-08-12版本。
实机测试失败,出现448错误提示:Clone SRC unknown.
查看ghosterr.txt文件后面的批处理语句,dst赋值正确,但src未赋值。

[ 本帖最后由 zxw 于 2010-8-14 22:28 编辑 ]

chenall 发表于 2010-8-14 23:14:24

原帖由 zxw 于 2010-8-14 22:26 发表 http://bbs.wuyou.net/images/common/back.gif
grldr为2010-08-12版本。
实机测试失败,出现448错误提示:Clone SRC unknown.
查看ghosterr.txt文件后面的批处理语句,dst赋值正确,但src未赋值。

你是如何启动的?src的值应该不会取错的,另外注意看一下启动之前显示的参数信息.有6秒的暂停.

我前面忘了说了,这个如果从U盘启动时,可能会把U盘当成硬盘.

嗯,目前没有对可能发生错误的地方进行处理.先找出问题,到时一起改一下.

zxw 发表于 2010-8-14 23:23:26

我的启动方式有点特殊,是本地硬盘前划出200m的UD区,QGHO目录内置于UD区根目录。
启动之前显示的参数信息:pdump      <==>1:2/QGHO_C.GHO

[ 本帖最后由 zxw 于 2010-8-14 23:56 编辑 ]

ali88home 发表于 2010-8-14 23:36:39

#菜单0 pdump

title ghost_Backup\n\n\t\tQuick Ghost Ver: 0.3\t\t2010-08-16\n\n\tmade by chenall QQ:366840202\t\thttp://chenall.net
write 0x60000 1000
------------------------------
#菜单1 pload 不对
title ghost_Backup\n\n\t\tQuick Ghost Backup\n\n\tmade by chenall QQ:366840202\t\thttp://chenall.net
write 0x60000 1001
fallback 0
kernel
---------------------------
#菜单2 pload
title ghost_Restore\n\n\t\tQuick Ghost Restore\n\n\tmade by chenall QQ:366840202\t\thttp://chenall.net
write 0x60000 1002
fallback 0
kernel

========
checkrange 1000 read 0x60000 && WENV run cat --length=0 ${dst_path} && WENV set mode=pload
checkrange 1001 read 0x60000 && wenv set mode=pdump
checkrange 1002 read 0x60000 && wenv set mode=pload


==========
经过实际测试放在【隐藏的EISA磁区】,这个ghost_Backup会错误辨别pload恢复动作,哈哈!还好先前有ghost起来。
disk.txt:
DiskPartitionsCylindersHeadsSectorsTotalSectors   Mbytes
0       3         4092       16      63      4124736       2014   

No.DrvType    Volume      PartType       ActOffset      Sectors    MBytes
1       Primary            HPFS/NTFS      Yes63          3298113    1610
2    C: Logic    OFFICE2G    Win95_FAT32         3298239   310401   151
3       Logic    PE2G      HPFS/NTFS         3608703   516033   251【隐藏的EISA磁区】


默认自动备份第一硬盘第一分区数据到第一硬盘最后一个分区/QGHO_C.GHO.这个ok

[ 本帖最后由 ali88home 于 2010-8-15 00:08 编辑 ]

chenall 发表于 2010-8-15 00:15:12

@zxw
嗯,这就对了,因为find --set-root会把ud当成第一个分区.
要再想想其它办法确定第一个分区.

@ali88home
谢谢提醒,我自己一直使用第一个菜单,没注意.
竟然犯了一个很严重的逻辑错误.(导致第2和3菜单完全失效)

而第一个菜单是自动模式,如果有备份了就执行恢复.

稍后再整理上传.

[ 本帖最后由 chenall 于 2010-8-15 00:16 编辑 ]

ly372184487 发表于 2010-8-15 01:59:17

太实用了,装机可以省下不少时间,very good!

renchmin 发表于 2010-8-15 08:16:15

学习了啊,这个很不错的。

bao423 发表于 2010-8-15 09:16:58

C大,好长时间都没见你的新作了,有一个问题想请教一下,具体内容请看:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=165975&highlight=chenall,谢谢!

zxw 发表于 2010-8-15 11:22:40

OK,测试成功!……

ali88home 发表于 2010-8-15 17:28:02

原帖由 chenall 于 2010-8-15 00:15 发表 http://bbs.wuyou.net/images/common/back.gif
@zxw
嗯,这就对了,因为find --set-root会把ud当成第一个分区.
要再想想其它办法确定第一个分区.

@ali88home
谢谢提醒,我自己一直使用第一个菜单,没注意.
竟然犯了一个很严重的逻辑错误.(导致第2和3菜单 ...
后学的问题,测试了一下,好像解决了,我实际再一次确认,先收入合集测试,谢谢!

jianliulin 发表于 2010-8-16 08:54:50

能否备份到畸形目录下,因为目前很多专门破坏gho文件的病毒

chen463 发表于 2010-8-16 09:26:31

这个ghost如果备份失败,第二次就不能使用了。是不是要处理一下删除gho。

chenall 发表于 2010-8-16 15:17:29

@jianliulin
这些可以的,完全自定义,想放在哪里都没问题。
@chen463
强制备份会覆盖的吧。


如果备份目的分区是fat的那用fat命令可以实现更多功能。

一切皆有可能!
这个的原则是尽量不用dos处理。
dos只用来执行备份恢复命令。

chen463 发表于 2010-8-16 15:23:04

原帖由 chenall 于 2010-8-16 15:17 发表 http://bbs.wuyou.net/images/common/back.gif
@jianliulin
这些可以的,完全自定义,想放在哪里都没问题。
@chen463
强制备份会覆盖的吧。


如果备份目的分区是fat的那用fat命令可以实现更多功能。

一切皆有可能!
这个的原则是尽量不用dos处理。 ...
强制备份会覆盖的吧。不会。。。

备份中故意重新开机模拟失败,但是实际是无法强制备份的,信息错误无法操作下去。

chenall 发表于 2010-8-16 15:40:34

我回头再试下,用手机上的,没有环境。印像中,ghost可以覆盖i备份的,可能要加个参数。

chen463 发表于 2010-8-16 17:39:19

原帖由 chenall 于 2010-8-16 15:40 发表 http://bbs.wuyou.net/images/common/back.gif
我回头再试下,用手机上的,没有环境。印像中,ghost可以覆盖i备份的,可能要加个参数。
如果备份中途停电失败,造成0字节gho,可以进入PE,右击该分区-属性-工具-【查错】【碎片整理】-勾选-确定,就可以删除了。


谢谢c大,这个跟本软件无关,强制备份-fro。

cchessbd 发表于 2010-8-16 19:47:04

to chenall:

不经意间发现一个问题,不晓得是不是可以算 bug ?

[ 本帖最后由 cchessbd 于 2010-8-16 19:52 编辑 ]

cchessbd 发表于 2010-8-16 20:02:04

研究了半天,还是没有得到自己想要的功能:

查找 WinNT/XP/03/Vista/Win7/2008 系统所在的磁盘分区, dst_id=x:y, src_id1=x:l(l=最后逻辑分区)   src_id2=x:lp (lp=最后主分区)

没找到,默认设置dst_id=1:1, src_id= 1:2。

不晓得chenall有没有办法写出这样的菜单?希望不会占用您太多时间。谢谢!

chenall 发表于 2010-8-17 01:14:58

#20是正常的,目前只能同时执行一个外部命令,wenv 不可以run另一个外部命令。

#21
1.dst_id可以参考。ntboot菜单。
2.单硬盘还是多硬盘?
单硬盘最后逻辑分区本例菜单就有。
多硬盘一样,先定位到最后硬盘
rootnoverify (hd-1,0)
root endpart
就是了。
主分区。我还没有什么比较好的方法。
目前可以用checkrange 来测试得到
思路:
检测(hd0,0) 到(hd0,3)的分区id只要不是扩展分区就可以了
另一个方法直接读取硬盘的分区表来确定最后主分区,可能更简单。

ali88home 发表于 2010-8-18 18:00:46

测试过的感觉,很好。
建议:备份失败,删除失败的gho,以免自动时,会把错误的gho恢复系统。

chenall 发表于 2010-8-18 18:34:54

原帖由 ali88home 于 2010-8-18 18:00 发表 http://bbs.wuyou.net/images/common/back.gif
测试过的感觉,很好。
建议:备份失败,删除失败的gho,以免自动时,会把错误的gho恢复系统。

可以添加一个简单的检测,如果GHO文件错误就不允许恢复(即使是强制恢复也要被禁止).

目前都是没有进行验证的.只是作一个示范.

有空再改改.

嘻嘻,可能里面用到的GRUB4DOS命令比较复杂,那些做一键还原的老大们不感兴趣.

ali88home 发表于 2010-8-18 23:05:17

原帖由 chenall 于 2010-8-18 18:34 发表 http://bbs.wuyou.net/images/common/back.gif


可以添加一个简单的检测,如果GHO文件错误就不允许恢复(即使是强制恢复也要被禁止).

目前都是没有进行验证的.只是作一个示范.

有空再改改.

嘻嘻,可能里面用到的GRUB4DOS命令比较复杂,那些做一键还原 ...
期待更新。。。
c大居住在泉州啊!o(∩_∩)o...哈哈
泉州这地方后学去过,不错的地方,可惜来去匆匆,没能体会他的美内涵。
这些做一键还原的大大,可能还没能注意这个好东西
GRUB4DOS命令如果是新的指令,那么???o(∩_∩)o...哈哈,真的是不会,学习。。。

cchessbd 发表于 2010-8-19 08:52:10

修改了c大的菜单,重新做了一个。覆盖数据的步骤有确认过程。

支持一键ghost的备份,maxdos的备份。有需要的同志可以pm我。


要是支持搜索任意路径的文件,就更强大了。
比如 se -2 *.gho,出来一个列表选择。表示搜索所有分区第二层目录以内的备份。……

严重YY,严重期待C大出品……

HYE 发表于 2010-8-19 08:52:37

感谢C大给我们带来这么好的工具
在虚拟机试了一把,感觉相当不错,只是不能自动识别最后的EISA隐藏主分区,不过有了qgho.set设置文件一切迎刃而解。
另外把ghost文件打包放在镜像外面是个亮点,这个思路相当好,方便我们更改ghost版本或是加些个dos工具。
这已经是个完整的一键恢复了,为了臭美我加了个界面,可以取消自动备份或恢复


退出自动模式可以手动选择分区

chenall 发表于 2010-8-19 16:31:22

原帖由 HYE 于 2010-8-19 08:52 发表 http://bbs.wuyou.net/images/common/back.gif
感谢C大给我们带来这么好的工具
在虚拟机试了一把,感觉相当不错,只是不能自动识别最后的EISA隐藏主分区,不过有了qgho.set设置文件一切迎刃而解。
另外把ghost文件打包放在镜像外面是个亮点,这个思路相当好 ...


想使用EISA分区也是很简单的啊.

在 QGHO.SET里面设置以下值就可以了.

set dst_chk=checkrange 0x12 parttype

解释:
dst_chk值是自动检测备份文件存放分区.可以是按文件名检测比如/QGHO/QGHO.BIN
或者是一个GRUB4DOS的命令.像上面的
检测分区ID是0x12.

maanu 发表于 2010-8-20 04:27:55

to Chenall

great release as always , two suggestions .

1. can you implement the Gho file search feature ?like a batch script which runs at DOS level , to search for the GHO files on all Hard disk partitions , and present the user , so that the user can choose what GHO file to be restores , and also let the user decide , so that he can choose what partition to select to restore ?
.
Regards,
Maanu from Pakistan

HYE 发表于 2010-8-20 08:01:50

原帖由 chenall 于 2010-8-19 16:31 发表 http://bbs.wuyou.net/images/common/back.gif



想使用EISA分区也是很简单的啊.

在 QGHO.SET里面设置以下值就可以了.

set dst_chk=checkrange 0x12 parttype

解释:
dst_chk值是自动检测备份文件存放分区.可以是按文件名检测比如/QGHO/QGHO.BI ...

又学了一招,不过还是按文件名检测好使,我把所有文件放到隐藏分区,备份也到qgho目录下,都不用另外建文件夹了,呵呵
页: [1] 2 3
查看完整版本: 发一个QGHO比较成熟的版本(2011-01-15全新的版本)