bfgxp 发表于 2010-12-17 13:03:09

Snapshot还原当前系统分区的技术分析

snapshot从1.4版开始支持还原当前操作系统所在分区,但似乎只能在gui中实现
找了半天也没有发现可以用命令行实现的方法或参数
哪位大大知道方法的麻烦说下
这是官方介绍内容http://www.drivesnapshot.de/en/restboot.htm
通过分析注册表发现

"BootExecute"=hex(7):61,00,75,00,74,00,6f,00,63,00,68,00,65,00,63,00,6b,00,20,\
00,61,00,75,00,74,00,6f,00,63,00,68,00,6b,00,20,00,2a,00,00,00,73,00,6e,00,\
61,00,70,00,6e,00,61,00,74,00,69,00,76,00,65,00,2e,00,65,00,78,00,65,00,00,\
00,00,00
在“bootexecute”下多了一个启动程序
snapnative.exe                        c:\windows\system32\snapnative.exe

而在这里多了以下几个值

"AutoReboot"=dword:00000000
"AutoRebootSuccess"=dword:00000000
"Destination"="\\??\\C:"
"FullImage"="\\??\\x:\\C-Drive.sna"

关于从“bootexecute”键中运行的程序的特点
经查相关技术文档说是win系统在启动到这里时,所有系统分区中的文件都没有被锁定,而snapshot则巧妙的利用了win系统的这一点特性,通过在“bootexecute”键中添加snapnative.exe来还原系统
为什么不是snapshot.exe呢,因为在bootexecute这里运行的程序是很底层的native程序,普通程序在这里还没法运行

通过以上分析,虽然目前还没有命令行参数支持这种还原,但我们却可以通过注册导入相关的键值来实现

[ 本帖最后由 bfgxp 于 2010-12-19 13:03 编辑 ]

lindafu 发表于 2010-12-17 13:15:56


Snapshot C: X:\C-DRIVE.sna
         -A    - save ALL sectors, ignore free cluster info (maintenance)
         -L650 - Limit resulting imagesize to 650MB (CDROM size)
         -T    - Test generated image file (verify correct checksums)
         -W    - suppress <Hit any key> if started from scheduler
         -R    - Empty Recycle Bin for this drive before Backup
         -G    - Graphical status display for command line mode
         -PW=MyPassword    (also used for restore and viewing)
         -C="My comment" add a comment to the image
         -ogenerate hash file with name "path\filename"
         -o    - don't generate hash file
         -h<HashFile> make a differential image


Snapshot C:+D:+HD1:3 X:\$disk-DRIVE.sna
          HD1:3 is the third partition on the first disk
          HD1:* can be used to backup all partitions on the first disk



Options for command line substitutions
Possible values for substitution are:
         $diskis substituted with the drive letter
         $dateresults in 050131 which represents January 31 2005
$computernameis substituted with the computername
         $typeresults in "dif" or "ful" for differential or full image
      $weekdayis substituted with the first two characters of the Weekday
         $yearis substituted with the year (4 digits)
      $monthis substituted with the month (2 digits)
          $dayis substituted with the day of the month (2 digits)
         $houris substituted with the hour
       $minuteis substituted with the minute
       $secondis substituted with the second


Snapshot X:\C-DRIVE.sna C:


Snapshot X:\C.sna Z: -V
       explores X:\C.sna as virtual drive Z: (-VM for mount only)
       (-VQ for mount only and wait for event. Use --unmount to terminate)


Snapshot X:\C.sna -h<HashFileName>

Snapshot X:\C-DRIVE.sna    -I
Snapshot X:\C-DRIVE.sna    -P
Snapshot X:\C-DRIVE.sna    -T

bfgxp 发表于 2010-12-17 16:19:16

回复 #2 lindafu 的帖子

官方的命令行说明文档看了几遍了
Snapshot X:\C-DRIVE.sna C:
这条不行的

andos 发表于 2010-12-17 22:22:18

原帖由 bfgxp 于 2010-12-17 16:19 发表 http://bbs.wuyou.net/images/common/back.gif
官方的命令行说明文档看了几遍了
Snapshot X:\C-DRIVE.sna C:
这条不行的
你照用X:\C-DRIVE.sna当然不行

X:\C-DRIVE.sna 表示Image放的位和名称
你应该不会放在X:\下吧

你应该改回你放的对应位置吧

bfgxp 发表于 2010-12-18 11:25:01

回复 #4 andos 的帖子

:)怎么说呢,还是多谢你这个解释,毕竟总有比我还菜的

songhangzhou 发表于 2010-12-22 15:58:50

本人本机备份的恢复是在纯DOS下用的命令:
A:\snapshot restore HD1 autoW:\c.drive.sna -Y -V
恢复主引导扇区(MBR)
A:\snapshot.exe restore HD1 MBR W:\c.drive.sna

声明下,是全镜像型的snapshot备份

楼主的意思好象是指针型的snapshot,恢复系统分区将在下一次启动 windows 前还原当前操作系统所在的分区..
在实际操作中,本人还不曾用过
主要是害怕,指针型的snapshot,备份的原盘坏了,数据应该是无法恢复的

zts59 发表于 2010-12-23 16:18:18

不错,也算真正脱离第三方系统了。

我对SNAPSHOT映像不好,两块硬盘之间备份及恢复。

备份一块硬盘其中一个分区,然后再恢复另一个硬盘某一分区,会导致WINDOWS对这个分区极不稳定,日志老是产生错误DISK

lianjiang 发表于 2010-12-23 16:43:08

原帖由 bfgxp 于 2010-12-17 13:03 发表 http://bbs.wuyou.net/images/common/back.gif
关于从“bootexecute”键中运行的程序的特点
经查相关技术文档说是win系统在启动到这里时,所有系统分区中的文件都没有被锁定,而snapshot则巧妙的利用了win系统的这一点特性,通过在“bootexecute”键中添加snapnative.exe来还原系统
为什么不是snapshot.exe呢,因为在bootexecute这里运行的程序是很底层的native程序,普通程序在这里还没法运行

通过以上分析,虽然目前还没有命令行参数支持这种还原,但我们却可以通过注册导入相关的键值来实现



很有价值,期待进一步研究,实现傻瓜化一键还原。

ban_r 发表于 2010-12-23 22:24:26

原帖由 bfgxp 于 2010-12-17 13:03 发表 http://bbs.wuyou.net/images/common/back.gif
snapshot从1.4版开始支持还原当前操作系统所在分区,但似乎只能在gui中实现
找了半天也没有发现可以用命令行实现的方法或参数
哪位大大知道方法的麻烦说下
这是官方介绍内容http://www.drivesnapshot.de/en/ ...
要怎么样才能获得: snapnative.exe 呢???

SORRY, 找到了。。。。 光问没动手....执行一次恢复就有了.

[ 本帖最后由 ban_r 于 2010-12-23 22:39 编辑 ]

songhangzhou 发表于 2010-12-23 23:20:47

一般指针型的snapshot都是只读的,且file system snapshot都是后台拷贝
如果能实现傻瓜式的snapshot一键还原,应该同三名一键恢复,雨过天晴的东西
差不多,就是不知道对系统性能影响大不大?

ban_r 发表于 2010-12-24 00:25:50

刚试验过,在WIN7系统中只要修改了:

"BootExecute"=hex(7):61,00,75,00,74,00,6f,00,63,00,68,00,65,00,63,00,6b,00,20,\
00,61,00,75,00,74,00,6f,00,63,00,68,00,6b,00,20,00,2a,00,00,00,73,00,6e,00,\
61,00,70,00,6e,00,61,00,74,00,69,00,76,00,65,00,2e,00,65,00,78,00,65,00,00,\
00,00,00
中的相关信息,确保system32中有snapnative.exe ,那么重新启动WIN7 就能自动恢复


"AutoReboot"=dword:00000000
"AutoRebootSuccess"=dword:00000000
这两项对应为: 不重启, 完成后重启 出错重启

[ 本帖最后由 ban_r 于 2010-12-24 00:27 编辑 ]

andos 发表于 2010-12-24 08:41:30

原帖由 lianjiang 于 2010-12-23 16:43 发表 http://bbs.wuyou.net/images/common/back.gif


很有价值,期待进一步研究,实现傻瓜化一键还原。
貌似只支持当前有安装系统才能这样使用吧?

如果当前没装系统就没用了,还是要到PE了吧...

lianjiang 发表于 2010-12-24 10:23:34

原帖由 andos 于 2010-12-24 08:41 发表 http://bbs.wuyou.net/images/common/back.gif

貌似只支持当前有安装系统才能这样使用吧?

如果当前没装系统就没用了,还是要到PE了吧...

没系统要能云还原,那是最高境界。
那样就什么都不需要了,靠意念就可以,呵呵。

andos 发表于 2010-12-24 12:22:21

原帖由 lianjiang 于 2010-12-24 10:23 发表 http://bbs.wuyou.net/images/common/back.gif


没系统要能云还原,那是最高境界。
那样就什么都不需要了,靠意念就可以,呵呵。
DOS版...可是这个没DOS版...

所以目前它就是这样...

lianjiang 发表于 2010-12-24 13:15:58

根据楼主的技术分析,写了一个傻瓜一键还原,欢迎测试。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=183946&extra=page%3D1



[ 本帖最后由 lianjiang 于 2010-12-24 13:47 编辑 ]

bfgxp 发表于 2010-12-24 14:44:38

回songhangzhou
一样的是全镜像型的

ban_r 发表于 2010-12-30 15:03:52

我们都绕了个弯路了..
其实:本来就有这个参数的: --schedule
snapshot --schedule C: x:\image-C.sna

lianjiang 发表于 2010-12-30 15:11:16

原帖由 ban_r 于 2010-12-30 15:03 发表 http://bbs.wuyou.net/images/common/back.gif
我们都绕了个弯路了..
其实:本来就有这个参数的: --schedule
snapshot --schedule C: x:\image-C.sna

不错的发现。谢谢分享。

lianjiang 发表于 2010-12-30 15:29:31

原帖由 ban_r 于 2010-12-30 15:03 发表 http://bbs.wuyou.net/images/common/back.gif
我们都绕了个弯路了..
其实:本来就有这个参数的: --schedule
snapshot --schedule C: x:\image-C.sna

这参数哪里找到的?
帮助信息里似乎没有这个参数的说明。

andos 发表于 2010-12-30 16:16:45

原帖由 lianjiang 于 2010-12-30 15:29 发表 http://bbs.wuyou.net/images/common/back.gif


这参数哪里找到的?
帮助信息里似乎没有这个参数的说明。
deUPX
之后用notepad打开那snapshot.exe就会找到

scheduling the restore of x:\image-C.sna to C: during the next reboot:
snapshot --schedule C: x:\image-C.sna
--autoreboot:off       don't boot after the restore has finished
--autoreboot:success   reboot after the image was successfully restored
--autoreboot:any       reboot after the image was restored
--listschedule         list the scheduled restore
--removeschedule       removes the scheduled restore


--addDriver- adds a new Hard Disk Diver to a restored Windows system drive.
                You need the driver.sys and the driver.inf file. 这一个应该就是传说中的driver injection功能吧....

[ 本帖最后由 andos 于 2010-12-30 16:24 编辑 ]

lianjiang 发表于 2010-12-30 16:28:10

原帖由 andos 于 2010-12-30 16:16 发表 http://bbs.wuyou.net/images/common/back.gif

deUPX
之后用notepad打开那snapshot.exe就会找到

scheduling the restore of x:\image-C.sna to C: during the next reboot:
snapshot --schedule C: x:\image-C.sna
--autoreboot:off       don't b ...


都是高手,能挖掘。

andos 发表于 2010-12-30 16:30:29

原帖由 lianjiang 于 2010-12-30 16:28 发表 http://bbs.wuyou.net/images/common/back.gif



都是高手,能挖掘。
见笑了,只是我在用别方面的命令行软件用熟了,那时就发现可以用notepad打开来查看而已,呵呵~~

bfgxp 发表于 2010-12-31 07:34:26

回复 #20 andos 的帖子

厉害,终于找出来了。
官方说明没有更新真害人啊
这样就不必自己写gui了

lianjiang 发表于 2010-12-31 07:50:38

原帖由 bfgxp 于 2010-12-31 07:34 发表 http://bbs.wuyou.net/images/common/back.gif
厉害,终于找出来了。
官方说明没有更新真害人啊
这样就不必自己写gui了

也说明了这个软件的开发商,不是很正规。
连帮助都不能同步更新。

andos 发表于 2010-12-31 08:07:30

原帖由 lianjiang 于 2010-12-31 07:50 发表 http://bbs.wuyou.net/images/common/back.gif


也说明了这个软件的开发商,不是很正规。
连帮助都不能同步更新。
没有chnagelog也一直被老外讨厌,每次新版都不知道更新了些什么...

开发者应该是只有一个人似的

[ 本帖最后由 andos 于 2010-12-31 08:08 编辑 ]

lianjiang 发表于 2010-12-31 08:10:11

原帖由 andos 于 2010-12-31 08:07 发表 http://bbs.wuyou.net/images/common/back.gif

没有chnagelog也一直被老外讨厌,每次新版都不知道更新了些什么...

开发者应该是只有一个人似的

确实是的,不知道更新什么,是很让人讨厌的。
喜欢的只好见一个下一个了。

andos 发表于 2010-12-31 08:52:06

原帖由 lianjiang 于 2010-12-31 08:10 发表 http://bbs.wuyou.net/images/common/back.gif


确实是的,不知道更新什么,是很让人讨厌的。
喜欢的只好见一个下一个了。
所以有老外说它是只更新日期和License期限而已,哈哈~~

1.40这个版本已经一直很久没变动过版号...

lianjiang 发表于 2010-12-31 09:12:13

原帖由 andos 于 2010-12-31 08:52 发表 http://bbs.wuyou.net/images/common/back.gif

所以有老外说它是只更新日期和License期限而已,哈哈~~

1.40这个版本已经一直很久没变动过版号...

d0z的ghost安装器1年多以来,也是每次更新写的都是“更新引导模块”。

bfgxp 发表于 2010-12-31 09:32:10

回复 #28 lianjiang 的帖子

大汗,也许确实只更新了引导模块

bfgxp 发表于 2010-12-31 09:33:50

原帖由 <i>lianjiang</i> 于 2010-12-31 07:50 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2126391&ptid=183485" 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 />

<br />
也说明了这个软件的开发商,不是很正规。<br />
连帮助都不能同步更新。 <br />
但不可否认,这个软件非常优秀
页: [1] 2
查看完整版本: Snapshot还原当前系统分区的技术分析