无忧启动论坛

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

利用awk分析 ghost -dd结果获取硬盘分区列表 dos版/xp32版

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-8 14:36:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本来用 lianjiang 的那个awk脚本分析ghststat.txt 获取最后硬盘分区没有问题。
可是发现 ghost -dd 有问题:
1、针对我的一个只有一个逻辑分区的硬盘 不能获取其分区表信息,具体可以看 ghststat.txt 的 713行

   同样问题minito 也有,但愿这只是一个个案。
2、不能将 ghost分区标号与dos盘符一一对应列举
所以编写此脚本,通过ghststat.txt 中FilesystemManager 段的各 VolumePos 项来分析各分区的信息。
gp.awk --------------awk脚本
gp.bat --------------bat脚本
需要awk 和ghost 11.02/11.5
脚本生成 px.bat并运行之,用于将硬盘逻辑分区总个数、主引导分区总个数、最后一个逻辑分区标号、最后一个主引导分区标号分别赋值给系统变量
脚本还同时显示 ghost所能识别的整个硬盘分区序列。

win32版本:gawk和gp脚本 gp_32.rar (78.98 KB, 下载次数: 191)   需要ghost32
dos版本:awk和gp脚本 gp.rar (32.9 KB, 下载次数: 169)
ghststat.txt    GHSTSTAT.rar (5.46 KB, 下载次数: 151)   太大了,直接附件上传。

硬盘序列表:
Index    Size        Type                        Vol
1.4:  E: 33.12GB     Logical fsfFat32            TEMP
1.1:     19.86GB     Primary fsfNtfsWindowsXP   
1.2:     19.64GB     Logical fsfFat32            PROGRAM1
1.3:     41.07GB     Logical fsfFat32            
1.5:     23.51GB     Logical fsfNtfsWindowsXP    NTFS_DISK
1.6:     2.08GB      Primary fsfFat32            RESTORE
1.7:     9.76GB      Primary fsfNtfsWindowsXP    Windows7
2.1:     74.52GB     Logical fsfFat32            BACKUP
3.1:     3.72GB      Primary fsfFat32            USB-DISK

是不是发现问题了?ghost 只识别出一个e:其他dos盘符都没有识别出对应关系 其中的1.6 1.7 为隐藏状态其他fat32 分区都已经被分配盘符了。可ghost 就是不认。在 xp32下没有这问题。

px.bat 内容
set Log_s=5
set Pri_s=4
set LastPri=3.1:
set LastLog=2.1:


gp.awk 内容 红色部分是新添加内容 用于锁定 FilesystemManager 段 附件已经重新更新上传
BEGIN {
N=0;start=0
if (x!=1) {  print "Index    Size        Type                        Vol"
} else {  px=0 ; pp=0;  l=0;  lx=0;  p=0 }
}

{
if ($1=="FilesystemManager") start=1
if (substr($1,1,3)=="===") start=start+1
if (start==2)
{if (x==1) {set()} else {list()}}
}

END {
if (x==1) {
  print "set Log_s="l
  print "set Pri_s="p   
  print "set LastPri="px
  print "set LastLog="lx
}
}

function list() {
if ($1=="VolumePos:") {
  if ($2!="") {  printf "%-6s",$2;  N=FNR   } else { ok=0 }
}
if (N!=0) {
if (FNR==N+1) { printf "%-3s",$2}
if (FNR==N+2) {  printf "%-12s",$2;  printf "%-8s",$3 }
if (FNR==N+3) { printf "%-20s",$2 }
if (FNR==N+4) { print $2 }
}
}

function set() {
if ($1=="VolumePos:") {
  if ($2!="") {pp=$2;  N=FNR } else { ok=0 }
}
if (N!=0) {
  if (FNR==N+2) {
   if ($3~"Log") {l=l+1;if (pp>=lx) lx=pp}
   if ($3~"Pri") {p=p+1;if (pp>=px) px=pp}
  }
}
}


gp.bat 内容
@echo off
ghost -dd
cls
awk -f gp.awk -v x=1 ghststat.txt >%temp%\px.bat
awk -f gp.awk  ghststat.txt
call %temp%\px.bat
if exist %temp%\px.bat del %temp%\px.bat
if exist ghststat.txt del ghststat.txt


gp.cmd 内容 xp32下
@echo off
ghost32 -dd
cls
gawk -f gp.awk -v x=1 ghststat.txt >%temp%\px.bat
gawk -f gp.awk  ghststat.txt
call %temp%\px.bat
if exist %temp%\Px.bat del %temp%\px.bat
if exist ghststat.txt del ghststat.txt









[ 本帖最后由 dos时代菜鸟 于 2010-8-9 07:45 编辑 ]
10#
发表于 2011-9-22 00:28:14 | 只看该作者
这个中有一个是U盘,请问如何区分出来?、

Index    Size        Type                        Vol
1.4:  E: 33.12GB     Logical fsfFat32            TEMP
1.1:     19.86GB     Primary fsfNtfsWindowsXP   
1.2:     19.64GB     Logical fsfFat32            PROGRAM1
1.3:     41.07GB     Logical fsfFat32            
1.5:     23.51GB     Logical fsfNtfsWindowsXP    NTFS_DISK
1.6:     2.08GB      Primary fsfFat32            RESTORE
1.7:     9.76GB      Primary fsfNtfsWindowsXP    Windows7
2.1:     74.52GB     Logical fsfFat32            BACKUP
3.1:     3.72GB      Primary fsfFat32            USB-DISK
回复

使用道具 举报

9#
 楼主| 发表于 2010-8-8 17:20:47 | 只看该作者
用 ghost 做备份/还原,还是用 ghost自带的工具比较保险,gdisk .连被驱动的usb-hdd也能识别,而minito/dpit/aefdisk 等只能识别本地盘。

而且当用 usb-hdd 启动电脑 ,usb-hdd 被系统默认成 第一硬盘,本地硬盘是第二硬盘,当为了加快速度而安装 usb驱动以后,第一硬盘位置不可用,而usb-hdd 被驱动成第三硬盘,所以当安装了usb驱动以后 usb-hdd对应的c:也就不可用。而此时用 aefdisk 检测第一硬盘肯定出错,而aefdisk 又不能辨别出被后来驱动了的“第三硬盘”,只有gdisk 可以,ghost -dd 也可以,但是有的时候却不能对应盘符。


现在不是差在 分析方法上,而是差在 ghost -dd 上。ghost -dd 本身有缺陷

[ 本帖最后由 dos时代菜鸟 于 2010-8-8 17:43 编辑 ]
回复

使用道具 举报

8#
发表于 2010-8-8 17:13:07 | 只看该作者
我是用 tfind的,以前分析过8.2~11.5版本的ghststat.txt
先结合ghost检测硬盘数。
如果只用aefdisk检测硬盘,部分机型或当插u盘的时候会卡死。
每个硬盘都可以列出来的。

FINDLP.BAT.rar

1.24 KB, 下载次数: 145, 下载积分: 无忧币 -2

回复

使用道具 举报

7#
 楼主| 发表于 2010-8-8 17:06:57 | 只看该作者
原帖由 cchessbd 于 2010-8-8 17:04 发表
对啊,他只放第一硬盘的分区表。每个版本都是这样的。


所以说,如果多个硬盘的情况下,怎么确定整个硬盘分区序列的末端分区?单凭第一个分区序列表不行的。

比如:如果我要从3.1 中的gho 回复系统到 1.1 或者把 1.1 备份成gho 到2.1 中,如果 批处理只能操纵第一个硬盘的话,就不好办了。

我们做这些的目的就是 再运行ghost 前定位 出目标分区和源分区。然后通过批处理自动完成备份和还原,可是如果多硬盘跨硬盘的操作呢? 我的dos工具箱 使用 gdisk 配合 awk 等字符串工具可以罗列出全部硬盘分区和 对应的盘符,但相对耗费时间,通过ghost -dd 快得多,但是ghost -dd 却在 盘符对应上存在问题。

[ 本帖最后由 dos时代菜鸟 于 2010-8-8 17:13 编辑 ]
回复

使用道具 举报

6#
发表于 2010-8-8 17:04:59 | 只看该作者
对啊,他只放第一硬盘的分区表。每个版本都是这样的。
回复

使用道具 举报

5#
 楼主| 发表于 2010-8-8 16:57:07 | 只看该作者
原帖由 cchessbd 于 2010-8-8 16:00 发表
ghststat.txt 里面不是将你硬盘所有分区都列出来了吗?


# Ord Boot Id Ext     First        Num       Last       Used NTFS
0  0    1   7 No         63   41656482   41656545          0 No
1   ...



你看看 我1# 的 ghststat.txt 的713 行内容就知道了,ghost 并不是可以把全部分区都放进这个表。我的一个硬盘上分明有一个 逻辑分区,他居然说这个硬盘没有分区。
而且如果是两个硬盘,这两个硬盘的 表 并不在一起而是中间隔了一些别的内容。还以1#那个 ghststat.txt 为例子
第638行 开始存放的是 第一个硬盘的分区序列,而到了713行才是第二个硬盘的分区序列,而且第二个硬盘的分区序列居然是空的。2.1分区 并不在713行第二硬盘的分区序列列表中

这些分区都有文件存放

[ 本帖最后由 dos时代菜鸟 于 2010-8-8 17:05 编辑 ]
回复

使用道具 举报

4#
发表于 2010-8-8 16:56:57 | 只看该作者
可能是你的FAT分区没有格式化,或者文件结构被破坏就会有不分配盘符的现象。

……以为是个很大的问题


ghost11.5在存在无文件结构的分区上还原备份时,可能该分区无法选择。11.2与8.3我记得应该是没有这种问题的。

[ 本帖最后由 cchessbd 于 2010-8-8 17:05 编辑 ]
回复

使用道具 举报

3#
发表于 2010-8-8 16:01:36 | 只看该作者
不明白!虚拟机看看……

虚拟机试了,大体按照你分区的情况,ghost11.5可以识别出来分区,也分配了盘符。




建议你试试 ghost8.3

[ 本帖最后由 cchessbd 于 2010-8-8 16:27 编辑 ]
回复

使用道具 举报

2#
发表于 2010-8-8 16:00:04 | 只看该作者
ghststat.txt 里面不是将你硬盘所有分区都列出来了吗?


# Ord Boot Id Ext     First        Num       Last       Used NTFS
0  0    1   7 No         63   41656482   41656545          0 No
1  1    0   b Yes   41656608   41190597   82847205          0 No
2  2    0   b Yes   82847268   86140467  168987735          0 No
3  3    0   b Yes  168987798   69448932  238436730          0 No
4  4    0   7 Yes  238436793   49303422  287740215          0 No
5  5    0  1c No  287740215    4369680  292109895          0 No
6  6    0  17 No  292109895   20466810  312576705          0 No

只是有的fat分区没有对应的盘符……
搞得我以为ghost -dd 无法识别你的硬盘分区表……
不过还是很奇怪为什么会没有盘符。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-5 03:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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