|  | 
 
| lc2000 初级用户
 
   
 
 
 
 积分 36
 发帖 14
 注册 2006-7-19
 状态 离线
 | 
| 『楼 主』:
 如何根据盘符知道分区在硬盘中的位置?
 
使用 LLM 解释/回答一下 
 
 
各位大侠,小弟目前利用ghost制作备份光盘。想把C盘生成镜像文件到E盘,使用了如下命令:ghost -clone,mode=pdump,src=1:1,dst=1:3:\backup.gho:1 -z2 -sure -fx。后来我发现有的硬盘C盘并不一定在硬盘的第一个分区,但是ghost是按硬盘的第几分区来做镜像的,所以请问有没有办法根据盘符得到分区在硬盘中的位置,然后再进行ghost。希望能给出脚本,谢谢了。 
 
 
 
 |  | 
|  2006-7-19 21:29 |  | 
|  | 
 
| fastslz 铂金会员
 
        DOS一根葱
 
 
 积分 5493
 发帖 2315
 注册 2006-5-1
 来自 上海
 状态 离线
 | 
| 『第 2 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by lc2000 at 2006-7-19 21:29:后来我发现有的硬盘C盘并不一定在硬盘的第一个分区
 
首先说明ghost src=1:1参数是备份第一个硬盘上第一个分区。 
至于你说的C盘并不一定在硬盘的第一个分区的情况是因为用U盘HDD方式启动的,此时U盘是第一个硬盘,真实的硬盘为第二了
 
解决办法: 
在U盘里放一个标记文件U.SYS 
@echo off 
set disk1=1 
if exist C:\U.SYS set disk1=2 
ghost -clone,mode=pdump,src=%disk1%:1,dst=1:3:\backup.gho -z2 -auto -sure -fx 
 
 
 
 |  | 
|  2006-7-19 23:10 |  | 
|  | 
 
| lc2000 初级用户
 
   
 
 
 
 积分 36
 发帖 14
 注册 2006-7-19
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
呵呵,不是这样的。我是用ezboot做的是启动光盘,跟U盘没有关系。之所以会出现C盘不是第一个硬盘的第一个分区,是因为在某些品牌机上(比如DELL)出厂时在硬盘上分了一个几十兆的分区,装好系统在“磁盘管理器”里看这个分区是第一个分区,但这个分区没有盘符,在我的电脑里是看不到的,此时如果用上面的ghost镜像其实会把这个分区镜像到D盘,达不到我的目的。所以我需要根据盘符进行镜像,也就是得到C盘是的几个分区,然后在进行ghost就不会出错了。 
 
 
 
 |  | 
|  2006-7-19 23:38 |  | 
|  | 
 
| lc2000 初级用户
 
   
 
 
 
 积分 36
 发帖 14
 注册 2006-7-19
 状态 离线
 | 
| 『第 4 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
或者能够根据操作系统装在哪个分区就镜像这个分区,也就是得到操作系统所在分区的位置。我所安装的操作系统都是windows2000 Server,最终目的是要备份操作系统分区。 
 
 
 
 |  | 
|  2006-7-19 23:58 |  | 
|  | 
 
| fastslz 铂金会员
 
        DOS一根葱
 
 
 积分 5493
 发帖 2315
 注册 2006-5-1
 来自 上海
 状态 离线
 | 
| 『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
哦,那我建议你用GDISK判断DELL的那个特殊分区(比如卷标,大小)@echo off
 set area=1
 gdisk 1 >disk1.txt
 rem 暂且卷标为DELL
 find /i "DELL" disk1.txt
 if not errorlevel 1 set area=2
 ghost -clone,mode=pdump,src=1:%area%,dst=1:3:\backup.gho -z2 -auto -sure -fx
 
 Last edited by fastslz on 2006-7-20 at 00:05 ]
 
 
 
 
 |  | 
|  2006-7-20 00:03 |  | 
|  | 
 
| fastslz 铂金会员
 
        DOS一根葱
 
 
 积分 5493
 发帖 2315
 注册 2006-5-1
 来自 上海
 状态 离线
 |  | 
|  2006-7-20 01:06 |  | 
|  | 
 
| lc2000 初级用户
 
   
 
 
 
 积分 36
 发帖 14
 注册 2006-7-19
 状态 离线
 | 
| 『第 7 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
我用ghost -dd看了一下,下面是贴图。其中BOOT 为 80的应该就是操作系统分区,是这样吧?可是用DOS命令行不知道怎么写,小弟对批处理还不太熟,希望大侠指点。另外我的分区都是NTFS格式的,可为什么NTFS那列显示的都是NO? 
 
 
 
 |  | 
|  2006-7-20 14:38 |  | 
|  | 
 
| lc2000 初级用户
 
   
 
 
 
 积分 36
 发帖 14
 注册 2006-7-19
 状态 离线
 |  | 
|  2006-7-20 14:40 |  | 
|  | 
 
| lc2000 初级用户
 
   
 
 
 
 积分 36
 发帖 14
 注册 2006-7-19
 状态 离线
 | 
| 『第 9 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
因为在VMWare上抓的图,无法使用DELL自己的硬盘,所以没有那个分区,但是我想效果是一样的 
 
 
 
 |  | 
|  2006-7-20 14:42 |  | 
|  | 
 
| fastslz 铂金会员
 
        DOS一根葱
 
 
 积分 5493
 发帖 2315
 注册 2006-5-1
 来自 上海
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
ghost -dd 要几个屏幕的贴一个图没用
 执行ghost -dd 后会在当前目录生成一个GHSTSTAT.TXT文件把GHSTSTAT.TXT贴出来
 我只要那特殊分区卷标就行了
 
 Last edited by fastslz on 2006-7-20 at 14:52 ]
 
 
 
 
 |  | 
|  2006-7-20 14:51 |  | 
|  | 
 
| lc2000 初级用户
 
   
 
 
 
 积分 36
 发帖 14
 注册 2006-7-19
 状态 离线
 | 
| 『第 11 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
ghost -dd生成的文件,dell保留分区的卷标应该是DellUtility。但是DELL的这个分区以后新机型有可能会变化啊。我的目的是找到操作系统所在分区的位置,这个文本里已经体现了,那个80的就应该表示是系统盘,我就是不知道怎么用DOS批处理写出来。刚才给DELL打了电话,他们说这个保留的64M隐藏分区没什么用处,可以删除。但是我觉得还是应该把ghost命令写成活得,这才是程序员应该做的事情,如果写成1:1,以后又碰到别的品牌机器又怎么办呢,所以这个问题还是要解决的。
 
 Last edited by lc2000 on 2006-7-20 at 15:53 ]
 
 
 
 
 
附件
1:  GHSTSTAT.TXT (2006-7-20 15:36, 4.08 KiB, 下载附件所需积分 1 点
,下载次数: 18) 
 |  | 
|  2006-7-20 15:36 |  | 
|  | 
 
| fastslz 铂金会员
 
        DOS一根葱
 
 
 积分 5493
 发帖 2315
 注册 2006-5-1
 来自 上海
 状态 离线
 | 
| 『第 12 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
@echo offset area=1
 GHOST -DD >NUL
 find /i "DellUtility" GHSTSTAT.TXT
 if not errorlevel 1 set area=2
 ghost -clone,mode=pdump,src=1:%area%,dst=1:3:\backup.gho -z2 -auto -sure -fx
 
 这样就ok了,如备份dell机自动转换src=1:2,普通机还是src=1:1
 
 
 
 
 |  | 
|  2006-7-20 15:53 |  | 
|  | 
 
| lc2000 初级用户
 
   
 
 
 
 积分 36
 发帖 14
 注册 2006-7-19
 状态 离线
 | 
| 『第 13 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
楼上的高手,如果以后DELL机的这个卷标发生变化了呢,我觉得最好是根据# Ord Boot Id Ext     First        Num       Last       Used NTFS
 0  0    0  de No         63     128457     128520          0 No
 1  1   80   7 No     128520   20964825   21093345          0 No
 2  2    0   7 Yes   21093408   62910477   84003885          0 No
 3  3    0   7 Yes   84003948   72228177  156232125          0 No
 这块,如果发现BOOT为80则是操作系统分区,位置是Ord+1,这个有办法用DOS命令实现吗?
 
 
 
 
 |  | 
|  2006-7-20 15:58 |  | 
|  | 
 
| lc2000 初级用户
 
   
 
 
 
 积分 36
 发帖 14
 注册 2006-7-19
 状态 离线
 | 
| 『第 14 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
楼上的高手,如果以后DELL机的这个卷标发生变化了呢,我觉得最好是根据# Ord Boot Id Ext     First        Num       Last       Used NTFS
 0  0    0  de No         63     128457     128520          0 No
 1  1   80   7 No     128520   20964825   21093345          0 No
 2  2    0   7 Yes   21093408   62910477   84003885          0 No
 3  3    0   7 Yes   84003948   72228177  156232125          0 No
 这块,如果发现BOOT为80则是操作系统分区,位置是Ord+1,这个有办法用DOS命令实现吗?
 
 
 
 
 |  | 
|  2006-7-20 16:00 |  | 
|  | 
 
| fastslz 铂金会员
 
        DOS一根葱
 
 
 积分 5493
 发帖 2315
 注册 2006-5-1
 来自 上海
 状态 离线
 | 
| 『第 15 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
哦.、忘了说,注意一下GHSTSTAT.TXT路径哦即使用GHOST -DD >A:\GHSTSTAT.TXT命令也无效
 
 
 
 
 |  | 
|  2006-7-20 16:02 |  |