无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: mygamexxx
打印 上一主题 下一主题

学习C大的QGHO制作了一个一键恢复系统,2011年9月27日最后更新

[复制链接]
31#
发表于 2011-8-13 19:52:15 | 只看该作者

回复 #30 mygamexxx 的帖子

他是如何定义的?我使用了文件编辑看过了,不明白46,59,167等..从哪里知道字符位置。
回复

使用道具 举报

32#
 楼主| 发表于 2011-8-13 19:55:46 | 只看该作者

回复 #31 ali88home 的帖子

靠数字符啊(比较原始呵,也可以有工具统计字符数,我不知道是什么工具,反正数量少就数一下),然后写入测试,位置不对就调整一下(比如估计是100, 测试写入后差多少字符数再加上,多测试几次,位置正确后就固定下来了)。写入是覆盖写入,不会增加原文件的字符数。

g参数和n参数设定时字符数量变化比较大,所以预留的字符比较多。预留字符数不够会覆盖掉下一行的参数或命令。
:BACKUP
Omnifs.exe delete %p%:%g%
ctmouse.com
Ghost.exe  -clone,mode=pdump,src=%d%,dst=%p%:%g% %n%
if exist %p%:\GHOSTERR.TXT goto :del
:del
Omnifs.exe delete %p%:%g%
goto :END

上面的批处理逻辑会不会有点问题,是否应该再加上红色部分:
:BACKUP
Omnifs.exe delete %p%:%g%
ctmouse.com
Ghost.exe  -clone,mode=pdump,src=%d%,dst=%p%:%g% %n%
if exist %p%:\GHOSTERR.TXT goto :del
goto :END
:del
Omnifs.exe delete %p%:%g%
goto :END

[ 本帖最后由 mygamexxx 于 2011-8-13 20:36 编辑 ]
回复

使用道具 举报

33#
发表于 2011-8-13 21:04:09 | 只看该作者
原帖由 ali88home 于 2011-8-13 19:52 发表
他是如何定义的?我使用了文件编辑看过了,不明白46,59,167等..从哪里知道字符位置。



建议你用 winhex 查看字符位置。。。。。
回复

使用道具 举报

34#
发表于 2011-8-13 23:33:52 | 只看该作者

回复 #32 mygamexxx 的帖子

goto :END
那样后面的执行就没有了。我实际操作过。


回复 #33 wang6610  的帖子
后学我就是用 winhex 查看字符位置,但是没有看出结果,为什么要那样的字符位置,有没有好的方法,可以马上知道字符位置,是如何使用winhex 查看字符位置,看到dos工具有1000多,是如何统计字符数的,我好奇???
回复

使用道具 举报

35#
发表于 2011-8-14 09:19:59 | 只看该作者
1.用用WINHEX的方法自己看图,很简单的

2.其实也可以直接利用GRUB4DOS自动计算地址.
像本贴可以修改为如下方法,
缺点: 计算位置需要花一些时间.
优点: 不用再为位置烦恼,即使用你修改了autoexec.bat,也没有关系,因为是自动计算的.


...
..
...
call :get_offset 0 d_addr
call :get_offset %d_addr% p_addr
call :get_offset %p_addr% m_addr
call :get_offset %m_addr% g_addr
call :get_offset %g_addr% n_addr
write --offset=%d_addr% (fd0)/autoexec.bat %p1%\r\n
write --offset=%p_addr% (fd0)/autoexec.bat %diskid%\r\n
write --offset=%m_addr% (fd0)/autoexec.bat pload
write --offset=%g_addr% (fd0)/autoexec.bat %p2%\r\n
write --offset=%n_addr% (fd0)/autoexec.bat %RESTORE%\r\n
....
...
...
goto :eof

:get_offset
::%?%或%?_WENV%可以获得cat命令查找的最后一个位置.number=1只找一个.
::从起始位置开始找跳过一行
cat --locate=\n --number=1 --skip=%1 (fd0)/autoexec.bat
::从上面的位置继续查找::::
cat --locate=:::: --number=1 --skip=%?% (fd0)/autoexec.bat
::把上面得到的结果设为变量
set %2=%?%

20110814085517.png (61.33 KB, 下载次数: 159)

20110814085517.png
回复

使用道具 举报

36#
发表于 2011-8-14 10:17:29 | 只看该作者

回复 #35 chenall 的帖子

感谢C大的图解释,终于明白,写入已经准备的3A空字符位置。
回复

使用道具 举报

37#
 楼主| 发表于 2011-8-28 09:44:23 | 只看该作者
2011年8月28日 对omnifs的参数进行设置,以适应SATA硬盘和IDE硬盘。对chenall 的“GRUB4DOS 通用模块之文件选择模块”添加中文显示。添加VBOOT引导VHD形式的XP(热键ALT+V),固定搜索引导WINXP-s1.vhd,如果有不同情况,自行修改vboot.bat。

这下希望没什么问题了吧。


[ 本帖最后由 mygamexxx 于 2011-8-28 09:45 编辑 ]
回复

使用道具 举报

38#
发表于 2011-8-28 11:36:19 | 只看该作者
原帖由 mygamexxx 于 2011-8-28 09:44 发表
2011年8月28日 对omnifs的参数进行设置,以适应SATA硬盘和IDE硬盘。对chenall 的“GRUB4DOS 通用模块之文件选择模块”添加中文显示。添加VBOOT引导VHD形式的XP(热键ALT+V),固定搜索引导WINXP-s1.vhd,如果有 ...

下载试用 感觉不错。
1 备份后,并没有出现恢复项
设置不一致
::    设定备份恢复对象
set p2=/boot./C_BAK.GHO
set m2=\\boot.\\C_BAK.GHO

cat --skip=0x4ff00 (md)+0x300 | set diskid=
if %diskid%==%p1% && root endpart && set p2=/C_BAK.GHO
::    判断程序所在分区是否与要备份恢复的分区是同一分区,如果位于同一分区,备份文件置于最后分区根目录;如果不位于同一分区,备份文件置于程序所在分区。

2 备份磁盘备份目录没有建立

:BACKUP
Omnifs.exe mkdir %p%:\boot..    (是否可加上上)
Omnifs.exe attrib +s +r +h %p%:\boot..
Omnifs.exe delete %p%:%g% %i%
Ghost.exe -clone,mode=pdump,src=%d%,dst=%p%:%g% %n% %f%
if exist %p%:\GHOSTERR.TXT goto :del
goto :END

2.GHO搜索好象不能搜索畸形目录下的文件

[ 本帖最后由 O.Y.M.2010 于 2011-8-28 17:15 编辑 ]
回复

使用道具 举报

39#
 楼主| 发表于 2011-8-28 20:16:27 | 只看该作者

回复 #38 O.Y.M.2010 的帖子

1.哦,是我忘记了修改回来(设置成程序和备份文件放置于畸形目录),如何创建畸形目录,请查看包中的setup.txt。你可将内置菜单下面几句修改一下:
    set path=/boot./grub
    set p2=/boot./C_BAK.GHO
    set m2=\\boot.\\C_BAK.GHO
    boot后面的点全部去掉,就变成不是畸形目录。
修改后可以正常。
2.后面的set p2=/C_BAK.GHO是当程序目录与要备份的分区是同一分区,无法放置备份文件,所以设置为备份文件放置于最后分区的根目录, 汗!还少一句set m2=\\C_BAK.GHO,请查看一楼的红色部分并修改。
3..gho搜索支持畸形目录与否我测试一下。确定搜索不到畸形目录下的GHO文件,我向C大反馈一下,这是C大的程序。原来是我不会使用,要再加一个参数。

上面问题请从一楼下载grldr.rar,解压后替换原有文件即可解决。

我重新上传一下设置成非畸形目录,并修正错误。

设置成畸形目录(要预先创建)可能要更改下面几句,并且程序目录与备份文件放置目录位于同一分区。
set path=/boot/grub
::    设定程序目录
set p2=/boot/C_BAK.GHO
set m2=\\boot\\C_BAK.GHO
::    设定备份文件位置及名称, p2是GRUB4DOS格式,m2是DOS格式

畸形目录运行情况:(程序所有文件和备份文件均在畸形目录下)


搜索情况:


[ 本帖最后由 mygamexxx 于 2011-8-28 21:59 编辑 ]
回复

使用道具 举报

40#
 楼主| 发表于 2011-8-28 23:25:13 | 只看该作者
使用说明:
一、常规目录(可以是EISA隐藏分区)
目标:程序文件放置于E:\back\grub, 备份文件(C_BAK.GHO)放置于E:\back\, 备份恢复对象是硬盘第二分区1:2(不是E盘)。延时3秒钟选择。
步骤:
1、创建目录E:\back,创建子目录E:\back\grub,将下载的程序解压至E盘根目录,将解压出来的E:\boot\grub目录下的文件全部剪切至E:\back\grub目录。WEE搜索引导E:\back\grub目录下的grldr。
find --set-root /back/grub/grldr
/back/grub/grldr
2、修改E:\back\grub目录下的grldr内置菜单如下几项:
set path=/back/grub
::    设定程序目录
set t=3
::    设定延时,单位是秒
set p1=1:2

::    设定备份恢复对象
set p2=/back/C_BAK.GHO
set m2=\\back\\C_BAK.GHO
::    设定备份文件位置及名称, p2是GRUB4DOS格式,m2是DOS格式

二、畸形目录
目标:程序文件放置于E:\back..\grub, 备份文件(C_BAK.GHO)放置于E:\back..\, 备份恢复对象是硬盘第二分区1:2(不是E盘)。延时3秒钟选择。
步骤:
1、将下载的程序中解压至E盘根目录,修改解压出来的E:\boot\grub目录下的grldr内置菜单如下几项:
set path=/back./grub
::    设定程序目录
set t=3
::    设定延时,单位是秒
set p1=1:2

::    设定备份恢复对象
set p2=/back./C_BAK.GHO
set m2=\\back.\\C_BAK.GHO
::    设定备份文件位置及名称, p2是GRUB4DOS格式,m2是DOS格式
2、WEE搜索引导E:\back..\grub目录下的grldr。
find --set-root /back./grub/grldr
/back./grub/grldr
3、创建畸形目录并复制程序,XP系统下进入CMD(手工输入或用批处理)
md e:\back..\
md e:\back..\grub
copy e:\boot\grub\*.* e:\back..\grub\.
rd e:\boot\ /s /q  #注意此目录下如果有其他文件会全部删除。
4、不想使用畸形目录时,卸载方法,XP系统下进入CMD(手工输入或用批处理):
md e:\back\
md e:\back\grub
copy e:\back..\grub\*.* e:\back\grub\.  #程序复制到常规目录
copy e:\back..\*.* e:\back\.  #备份文件复制到常规目录
rd e:\back..\ /s /q
同时删除WEE对E:\back..\grub目录下的grldr的引导菜单。



[ 本帖最后由 mygamexxx 于 2011-8-28 23:39 编辑 ]
回复

使用道具 举报

41#
 楼主| 发表于 2011-8-29 19:14:38 | 只看该作者
考虑了再考虑,看样子还是要回到再初的做法,备份文件与程序置于同一分区,因为安装时你知道分区是什么类型,用程序选择要考虑太多,万一找到个linux的分区不是没戏,要出错。反正最初的方案只有一个缺点:程序所在分区不能与要备份恢复的对象分区是同一分区。

[ 本帖最后由 mygamexxx 于 2011-8-29 19:19 编辑 ]
回复

使用道具 举报

42#
发表于 2011-8-30 14:29:31 | 只看该作者
原帖由 mygamexxx 于 2011-8-29 19:14 发表
考虑了再考虑,看样子还是要回到再初的做法,备份文件与程序置于同一分区,因为安装时你知道分区是什么类型,用程序选择要考虑太多,万一找到个linux的分区不是没戏,要出错。反正最初的方案只有一个缺点:程序 ...


   将从 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158887&highlight=ghostid 下载的镜像
按楼主的思路,修改了一下,
   畸形目录,一次备份后,只提供恢复功能
gholdr.bat:
!BAT
::---------lastdrv------------
set m=/os-backup../c_bak.gho
root endpart && (fd0)/diskid
cat --skip=0x4ff00 (md)+0x300 | set lastp=
ls %m% && cat --length=0 %m% || set gho=1
ls %m% && cat --length=0 %m% && set gho=2
ls %m% || set gho=0
::--------omnfis.exe----------
echo %lastp% > (md)0x200+1
cat --locate=\: --replace=\. (md)0x200+1
cat (md)0x200+1 | set bakp=
write --offset=17 (fd0)/bd.bat %bakp%\r\n
::------------sysdrv-------------------
find --ignore-cd --ignore-floppies /ntldr (fd0)/diskid || find --ignore-cd --ignore-floppies /bootmgr (fd0)/diskid || set sysp=
cat --skip=0x4ff00 (md)+0x300 | set sysp=
write --offset=17 (fd0)/sd.bat %sysp%\r\n
::----------if--go------------------
if %lastp%==%sysp%  goto 0x220
if %gho%==1 goto 0x3000
if %gho%==0 goto 0x3000
if %gho%==2 goto 0x4400
exit
:0x4400    Restore
clear
echo -P:1012 $[0105]Mirror OK,  Enter the password recovery system ...
echo -P:1122 $[0102]password=123456   
password --md5 $1$2mJm$0MyiKSe0orTgEXBKP73Ac0
chainloader (fd0)+1
rootnoverify (fd0)
exit
:0x3000    Backup
clear
echo -P:1012 $[0105]Enter the password to start the backup system ...
echo -P:1122 $[0102]System backups in the final partition
password --md5 $1$ixUm$9Z/INiiCgjyM4cyhfIhrW.
::    pass=admin
cat --locate="rst" --replace=bak --skip=43 (fd0)/autoexec.bat
chainloader (fd0)+1
rootnoverify (fd0)
exit
:0x220
clear
echo -P:1012 $[0105]Error: not ntldr .or. bootmgr .or. Backup partition
echo -P:1122 $[0105]Press any key to MS-DOS ... && pause
(fd0)/fat del (fd0)/autoexec.bat
chainloader (fd0)+1
rootnoverify (fd0)
exit
-----------------------------------
bak.bat:
@ECHO OFF
CALL SD.BAT
CALL BD.BAT
set bf_dir=os-backup..
Omnifs.exe mkdir %B%:\%bf_dir% >nul
Omnifs.exe attrib +s +r +h %B%:\%bf_dir% >nul
ghost -clone,mode=pdump,src=%S%,dst=%B%:\%bf_dir%\c_bak.gho -sure  -fro -z5 -rb
cls
------------------------------
rst.bat:
@ECHO OFF
CALL SD.BAT
CALL BD.BAT
set bf_dir=os-backup..
GHOST -clone,mode=pload,src=%B%:\%bf_dir%\c_bak.gho:1,dst=%S% -fro -crcignore  -sure -rb
CLS
----------------------------
安装使用:

title G4D for ghost
map --mem /backup.img (fd0)
map --hook
(fd0)/gholdr.bat
回复

使用道具 举报

43#
 楼主| 发表于 2011-8-30 20:28:25 | 只看该作者
由于分区的复杂性及可能的未知性,比如存在linux分区,使用endpart等可能定位到这些分区,所以还是不要使用这些参数比较好。
我用移动硬盘测试了一下,我的移动硬盘最后分区是linux的分区,使用root endpart定位到了此分区。

所以我还是回到了最初的方案。至少安装时你知道这个分区是什么文件系统类型,分区自由空间是否足够。不至于引起一些未知的错误。
回复

使用道具 举报

44#
发表于 2011-8-31 06:38:59 | 只看该作者

回复 #42 O.Y.M.2010 的帖子

可惜那个连接已经无法下载,可以分享你的作品吗?想试试功能效果,有没有更突出。
回复

使用道具 举报

45#
发表于 2011-8-31 09:26:15 | 只看该作者
原帖由 mygamexxx 于 2011-8-30 20:28 发表
由于分区的复杂性及可能的未知性,比如存在linux分区,使用endpart等可能定位到这些分区,所以还是不要使用这些参数比较好。
我用移动硬盘测试了一下,我的移动硬盘最后分区是linux的分区,使用root endpart定 ...


endpart  指当前系统中盘号最大的那个分区,你移动盘的分区数大于硬盘的分区数? 用endpart 就可能指向它了
一般只要硬盘分区个数大于  U盘 或 移动盘  endpart还是很准的,玩这个主要是学习一下G4D的批处理,备份一般手动

回复 #44 ali88home
http://u.115.com/file/dnhfsjdc#
g4dgho.img

[ 本帖最后由 O.Y.M.2010 于 2011-8-31 09:55 编辑 ]
回复

使用道具 举报

46#
 楼主| 发表于 2011-8-31 12:57:23 | 只看该作者
对C大搜索模块进行了整合和改进。解压替换1楼的searth.bat文件。
效果:


纯粹瞎搞,希望C大看到不会见怪。

[ 本帖最后由 mygamexxx 于 2011-8-31 13:10 编辑 ]

searth.rar

1.86 KB, 下载次数: 26, 下载积分: 无忧币 -2

回复

使用道具 举报

47#
 楼主| 发表于 2011-8-31 13:31:19 | 只看该作者

回复 #45 O.Y.M.2010 的帖子

硬盘上也有可能有LINUX分区啊,有人喜欢多系统。如果此分区刚好出现在最大分区号,?。。。
所以通用性就存在问题。
回复

使用道具 举报

48#
发表于 2011-8-31 14:04:23 | 只看该作者
原帖由 <i>23070205</i> 于 2011-8-5 21:45 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2285529&ptid=194499" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
期待给一个成品学习下。谢谢
<br />
感谢分享原创,如果能自动完成所有操作,简单易用就更好了。
回复

使用道具 举报

49#
 楼主| 发表于 2011-8-31 14:09:26 | 只看该作者
如何自动完成,有的希望备份第一分区,有的希望备份第二分区。备份文件放置分区空闲空间是否足够。有太多的不一致,要自动完成不要太复杂哦!!

除非是新装机,一键分区,然后安装系统在固定位置。问题是系统也不一定一样啊,有的XP,有的WIN7,需要的磁盘空间也不同啊。

不玩了,搞得有点上瘾,天天上无忧。

[ 本帖最后由 mygamexxx 于 2011-8-31 14:15 编辑 ]
回复

使用道具 举报

50#
发表于 2011-8-31 18:48:42 | 只看该作者
原帖由 mygamexxx 于 2011-8-31 14:09 发表
如何自动完成,有的希望备份第一分区,有的希望备份第二分区。备份文件放置分区空闲空间是否足够。有太多的不一致,要自动完成不要太复杂哦!!

除非是新装机,一键分区,然后安装系统在固定位置。问题是系统 ...

感谢楼主的不懈努力,给我们提供一个个的版本。我都收藏了。希望自动安装的话,还是可以实现的。主要判断所安装的分区与要备份的分区的大小就ok了吧。至于备份的分区,一般都是当前激活的分区就是了吧。至于win7带100mb的保留分区的,有点特殊了。
不知我的理解是否正确?
回复

使用道具 举报

51#
发表于 2011-9-5 19:29:37 | 只看该作者
学习了下面这个帖子,收获很大。有了一点启发。搞了这个自由度很高的可以显示中文的grldr热键引导的小东东。网络学习。特分享给大家。
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

52#
 楼主| 发表于 2011-9-5 21:02:06 | 只看该作者
小改一下:
如果检测到备份文件已经存在,必须输入密码(下文中的密码为:123456)才能重新备份。恢复就不加密码了,否则给别人装上后要恢复时还得找你要密码,真正是一键恢复。


:0x3000    Alt+B
clear
if %gho%==2 password --md5 $1$om70$FkKbNfOBf72FrRSqrj34E1
map --mem %~dp0OneKey.ima (fd0)
map --hook
write --offset=16 (fd0)/autoexec.bat %p1%\r\n
write --offset=31 (fd0)/autoexec.bat %diskid%\r\n
write --offset=46 (fd0)/autoexec.bat pdump
write --offset=59 (fd0)/autoexec.bat %d2%\r\n
write --offset=167 (fd0)/autoexec.bat %d1%\r\n
write --offset=275 (fd0)/autoexec.bat %m2%\r\n
write --offset=383 (fd0)/autoexec.bat %BACKUP%\r\n
chainloader (fd0)/io.sys
exit

[ 本帖最后由 mygamexxx 于 2011-9-5 21:19 编辑 ]
回复

使用道具 举报

53#
发表于 2011-9-7 10:04:46 | 只看该作者
原帖由 mygamexxx 于 2011-8-31 14:09 发表
不玩了,搞得有点上瘾,天天上无忧。

呵呵,我也是,天天无忧,疑难无忧。
回复

使用道具 举报

54#
 楼主| 发表于 2011-9-9 22:37:55 | 只看该作者
自己顶一下。
2011年9月9日修正DOS批处理一处错误(用于GHOST备份中断时删除备份文件);映像包中增加func.exe用于DOS下重启;备份文件已存在,重新备份时需要密码(当前密码为123456);修改.GHO文件搜索中分区信息可查看选定分区根目录内容。
回复

使用道具 举报

55#
发表于 2011-9-10 23:38:15 | 只看该作者
楼主又更新了   辛苦了啊
回复

使用道具 举报

56#
 楼主| 发表于 2011-9-17 23:13:03 | 只看该作者
注意:默认备份第一硬盘的第一分区到程序所在目录下。程序会修改硬盘MBR,请谨慎使用,后果自负。

[ 本帖最后由 mygamexxx 于 2011-9-22 10:36 编辑 ]
回复

使用道具 举报

57#
发表于 2011-9-19 08:18:57 | 只看该作者
一路学习过来,强大啊,多谢分享
回复

使用道具 举报

58#
发表于 2011-9-20 20:45:14 | 只看该作者

回复 #52 mygamexxx 的帖子

搜索到的gho文件  能直接通过选中、回车进行恢复吗
回复

使用道具 举报

59#
 楼主| 发表于 2011-9-21 20:58:23 | 只看该作者
目前无法选中直接恢复,这是C大的程序,我功力太浅,无法进一步修改,此程序在放在这里的主要用途是安装时查看分区情况和查找以前的备份手动恢复。
回复

使用道具 举报

60#
发表于 2011-9-21 21:06:57 | 只看该作者
QGHO可以直接通过选中,回车进行恢复.(QGHO第4个菜单项)

默认是搜索所有磁盘根目录(一级),可以通过菜单选择指定磁盘,支持二级目录(修改QGHO文件可以搜N级目录,不过速度太慢,用处不是很大).

有兴趣可以参考测试一下.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 09:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表