无忧启动论坛

标题: 新手请教:如何判断系统有两个以上分区(然后执行GHOST)? [打印本页]

作者: lhc0688    时间: 2012-2-27 17:58
标题: 新手请教:如何判断系统有两个以上分区(然后执行GHOST)?
先讲下我的GHOST备份恢复的想法:

1、首先说明下:这个备份恢复是自己封装的系统上使用,所以可以确定系统版本(winxp),可以确定是从硬盘启动执行(封装前做好的,有进入DOS选项);
现在就是不能确定客户机是否有两个以上分区、是否存在两个物理硬盘。也就是说是否存在1:2,或2:1这两个分区。

2、下面说下目的:我就是想把系统从第一个硬盘分区备份到第二个分区上(因为是在自己封装的系统上执行,所以可以肯定系统在1:1分区上),备份目的盘为第二个分区(因为最低只要有两个分区,就可以实现备份,没必要一定备份到最后一个分区上)

3、系统分区为FAT32(封装时做的),但不能确定第二个分区是否为NTFS,所以ghost命令想使用1:1、1:2(或2:1),不用盘符,这样就不用再安装NTFS驱动了;

想请教各位高手:如何判断1:2存在(不存在判断2:1),如存在则执行ghost,如这两个都不存在,则提示“系统只有一个分区,不能备份恢复”?

本人dos基本是个菜鸟,只能求助各位高手,帮忙指点,在此先谢过各位,谢谢!

[ 本帖最后由 lhc0688 于 2012-2-27 18:01 编辑 ]
作者: lhc0688    时间: 2012-2-27 18:24
如果不考虑2:1,则可以用判断分区总数是否>=2方式,主要是现在不少笔记本使用SSD+HDD双硬盘,系统装在SSD上;一些老机子也可能会用两个硬盘。所以想法是直接判断1:2(2:1)是否存在。

[ 本帖最后由 lhc0688 于 2012-2-27 18:25 编辑 ]
作者: dos时代菜鸟    时间: 2012-2-27 20:59
你执行一下 ghost 附带的 软件  omnifs

纯粹dos下 运行 omnifs info 看一下效果。
作者: lhc0688    时间: 2012-2-27 21:05
谢谢楼上朋友,omnifs试过了,能显示分区信息,但不知道批处理该怎么写,才能实现上述功能,还望详解,谢谢!
作者: dos时代菜鸟    时间: 2012-2-27 21:11
标题: 回复 #4 lhc0688 的帖子
简单的批处理是无法实现你的要求的,需要第三方软件的支持,用第三方软件结合脚本 对 命令执行结果进行分析和筛选。
第三方软件 比如 awk /string /nset /lmod 等等,需要认真学习。一时间也讲不明白啊。

看看 我的 dos工具箱,或许能对你有帮助。里面的 dos\help 文件夹还有很多帮助文件。

另外 这个 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158648&highlight=%2Bdos%CA%B1%B4%FA%B2%CB%C4%F1 应该有用。

[ 本帖最后由 dos时代菜鸟 于 2012-2-27 21:39 编辑 ]
作者: lhc0688    时间: 2012-2-27 22:31
谢谢5楼的资料,感觉很有用!不过估计需要点时间认真学习一下才能搞定,很多东西都没听说过,先谢谢!
作者: dengdzc    时间: 2012-2-28 21:09
原帖由 lhc0688 于 2012-2-27 17:58 发表
先讲下我的GHOST备份恢复的想法:

1、首先说明下:这个备份恢复是自己封装的系统上使用,所以可以确定系统版本(winxp),可以确定是从硬盘启动执行(封装前做好的,有进入DOS选项);
现在就是不能确定客户 ...



可参考下:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=201003&extra=page%3D1
作者: lhc0688    时间: 2012-3-1 12:48
感谢楼上朋友!
我在尝试用omnifs+awk 来判断目标分区,希望时代菜鸟及各位老大能再帮忙指点下,想实现如下功能:

1、先判断硬盘1是否存在,存在则获取分区数,比如1.1-1.5;
2、判断1.2是否为隐藏分区,非隐藏分区则继续判断是否为活动分区,非活动分区,则目标分区为1.2,反之则继续判断1.3-1.5;
3、以上判断均没有,再判断硬盘2是否存在,存在则继续判断2.1---;
4、均不存在,则提示“无可用的备份分区!”

哪位老大能帮忙写段程序实现以上功能,非常感谢!
作者: dos时代菜鸟    时间: 2012-3-1 14:50
标题: 回复 #8 lhc0688 的帖子
你表述的太繁琐了。
你看我这样说是否符合你的意思:
获取每块硬盘的分区个数,找出所有硬盘分区序列中的第一个非活动的没有隐藏的分区,如果找不到或者这个分区是1.1 就宣告 “不符合条件”

omnifs info |awk '$0!~"Active" && $0!`"Hidden" && $0~"Volume"'|awk '{print $1;exit}'


这里还涉及 活动分区 和 非活动分区 的 概念问题。
活动分区:active 分区,可以引导 进入操作系统的 主引导分区。
非活动分区:扩展分区下的多个 逻辑分区 和 没有被标记为 active 的 主引导分区 。


通常做系统恢复,都是 分区出 另一个与 被 active 了的 主引导分区相对应的 “第二主引导分区” ,这个 第二主引导分区用来在特定的环境下,引导“第二系统”,对“第一主引导分区”进行备份、还原。因为 mbr 体系中 只允许有一个 被 active 的主引导分区,所以 当“第二”主引导分区被 active 激活,第一主引导分区 active状态就必然被关闭。
你说的 隐藏、不隐藏、活动、非活动 到底是 什么?
omnifs 并不能区分 主引导分区 还是 逻辑分区,只能通过 active 标记区分出可以引导进入系统 的分区是主引导分区,如果一块硬盘分区序列中还存在没有被 active 的 主引导分区,omnifs 看不出来。那么 ,omnifs 也 不能分出 隐藏的分区 到底是 主引导分区还是逻辑分区 。


对 硬盘分区的 识别和判断 还是用 gdisk 更合适。







[ 本帖最后由 dos时代菜鸟 于 2012-3-1 15:28 编辑 ]
作者: lhc0688    时间: 2012-3-1 18:02
菜鸟大侠,还是你描述的更准确,我刚才也试了一下gdisk,确实比omnifs更合适。

至于第二激活分区,主要是考虑到可能存在双系统,该分区可能本身也会做备份还原,这样一是文件会增大,二是需要考虑的因素太复杂(是否会被重复覆盖等。。。),感觉麻烦,再说绝大多数电脑是比较简单的;

隐藏分区主要是考虑这种分区很多会用做加密数据存储盘(TrueCrypt之类的),操作可能会造成失误。

非常感谢您的指教,还再想麻烦一下:如果换成gdisk,那上面的语句应该怎样写呢?

谢谢!
作者: lhc0688    时间: 2012-3-1 18:11
我说的活动,就是您讲的被 active 激活,因为系统是自己封装的,所以可以确定是用一个系统分区双引导(有dos选项);

隐藏就是指 Status 为 H 的分区(gdisk);

谢谢!
作者: dos时代菜鸟    时间: 2012-3-1 19:50
原帖由 lhc0688 于 2012-3-1 18:02 发表

非常感谢您的指教,还再想麻烦一下:如果换成gdisk,那上面的语句应该怎样写呢?



你都研究到这个程度了,就自己继续研究吧。
相信你不是那种 “拿来主义泛滥,原创精神匮乏” 的家伙。
作者: 于山    时间: 2012-3-2 06:21
原帖由 lhc0688 于 2012-2-27 17:58 发表
先讲下我的GHOST备份恢复的想法:

1、首先说明下:这个备份恢复是自己封装的系统上使用,所以可以确定系统版本(winxp),可以确定是从硬盘启动执行(封装前做好的,有进入DOS选项);
现在就是不能确定客户 ...

运行这个FREEDOS-CN.rar,就有扫描磁盘显示!
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=204942&page=1#pid2369514
作者: lhc0688    时间: 2012-3-2 10:12
谢谢时代菜鸟及于山老大!

我再领会一下,不过我没有编程语言基础,对这些奇怪的符号很头疼,多有麻烦,还请见谅。
作者: lhc0688    时间: 2012-3-3 12:55
s时代菜鸟老大的

omnifs info |awk '$0!~"Active" && $0!`"Hidden" && $0~"Volume"'|awk '{print $1;exit}'

能很准确的判断到我想要的备份硬盘分区,但我在测试时候,遇到点其他问题:运行比较慢,经常出现死机情况,不知道是什么问题,哪里出问题了?




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3