中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » [原创]任意分区一键恢复的实现
« [1] [2] »
作者:
标题: [原创]任意分区一键恢复的实现 上一主题 | 下一主题
crshen
中级用户




积分 447
发帖 126
注册 2004-2-10
状态 离线
『楼 主』:  [原创]任意分区一键恢复的实现

经过N次探索,终于编译成功可备份任意分区的一键恢复工具,介绍如下:

1. 备份/恢复通过ghost完成;

2. 获取分区信息时,基于GDISK.EXE,能识别NTFS格式,因其与ghost.exe为同一公司产品,兼容性无需置疑;

3. 备份/恢复的映像文件存放在硬盘的最后一个FAT/FAT32分区中,因此要求硬盘至少有两个以上分区,其中包括至少一个FAT32分区,并且不能备份/恢复该分区;

4. 备份/恢复通过程序的运行参数r控制,不带参数为备份,带参数r为恢复;

5. 按下C即对第一分区操作,E为第三分区,以此类推,选择分区时盘符与在windowsXP所示相同(如有ntfs分区,与DOS下所见不同),相应映像文件为disk1p1.gho,disk1p3.gho(表示第一硬盘第n分区);

6. C语言编写,覆盖方式运行,速度与直接运行ghost相同,希望大家测试,部分源程序见后;

7. 如有人感兴趣,将编译成图形界面,或对C语言了解者,可自行更改。

注意:
1.dos下运行时需天汇中文系统tw.exe支持;
2.ghost.exe应在同一目录下;
3.需先执行gdisk 1>drivent.txt,生成硬盘分区信息文件;
4.加载smartdrv.exe将大加快备份速度;
5.包中所附ghost.exe仅为测试参数使用



从来不用别人的东西,要用,也先改成自己的再说!
2004-5-29 00:00
查看资料  发送邮件  发短消息 网志  OICQ (67154440)  编辑帖子  回复  引用回复
crshen
中级用户




积分 447
发帖 126
注册 2004-2-10
状态 离线
『第 2 楼』:  

gdisk 1 生成的硬盘分区信息表:

Disk  Partitions  Cylinders  Heads  Sectors  Mbytes  Model
  1        4         2434     255      63   19092.9  Unavailable

Partition  Status   Type     Volume Label   Mbytes   System   Usage
C:  1        A    PRIMARY    WINDOWS98     6000.8  FAT32      31%
     2             EXTENDED                 5090.9             27%
D:  3             LOGICAL    SHARE         5090.9  FAT32      27%
     4             PRIMARY                  7993.3  NTFS/HPFS  42%



从来不用别人的东西,要用,也先改成自己的再说!
2004-5-29 00:00
查看资料  发送邮件  发短消息 网志  OICQ (67154440)  编辑帖子  回复  引用回复
crshen
中级用户




积分 447
发帖 126
注册 2004-2-10
状态 离线
『第 3 楼』:  

实现思路:
1. 分区信息表中,第二行第二个数字即为总分区数,但其中包含了extended分区,应去除;
2.从第五行起,凡DOS下可见的fat/fat32分区,均有盘符显示,倒数第二列显示分区类型;
3. 盘符与其后的分区数并不一致;
4.运行ghost,显示的分区与gdisk一致(同一公司产品嘛);



从来不用别人的东西,要用,也先改成自己的再说!
2004-5-29 00:00
查看资料  发送邮件  发短消息 网志  OICQ (67154440)  编辑帖子  回复  引用回复
crshen
中级用户




积分 447
发帖 126
注册 2004-2-10
状态 离线
『第 4 楼』:  

/*从file文件的第row行开始查找string字符串,返回数组中1为找到*/
void GetPart32(char *file, int row, char *string, int *partition)
{
  int i;
  FILE *fpin;
  char buffer[150];

  if ((fpin = fopen(file, "r") == NULL)
    exit( - 1);

  for (i = 1; i < row; i++)
    fgets(buffer, 150, fpin);

  for (i = row; !feof(fpin); i++)
  {
    fgets(buffer, 150, fpin);
    if (strstr(buffer, string) != NULL)
      partition[i - row] = 1;
  }
  fclose(fpin);
}

该函数可用来查找extended分区个数等!



从来不用别人的东西,要用,也先改成自己的再说!
2004-5-29 00:00
查看资料  发送邮件  发短消息 网志  OICQ (67154440)  编辑帖子  回复  引用回复
crshen
中级用户




积分 447
发帖 126
注册 2004-2-10
状态 离线
『第 5 楼』:  

/*在file文件中读row行,col列的字符串*/
char *GetPartNT(char *file, int row, int col)
{
  char string[150], str[20], c;
  int i, j, num = 0, word = 0;
  FILE *fp;

  if ((fp = fopen(file, "r") == NULL)
    exit( - 1);

  for (i = 0; i < row; i++)
    fgets(string, 150, fp);

  /* c为空格,没出现单词*/
  for (i = 0; (c = string) != '\0'; i++)
    if (c == ' ')
      word = 0;
  /* c不为空格,但上次c为空格,出现单词 */
  else if (word == 0)
  {
    word = 1;
    num++;
    /*单词数累加*/
    if (num == col)
      for (j = i; string[j] != ' '; j++)
        str[j - i] = string[j];
    str[j - i] = '\0';
  }
  fclose(fp);
  return str;
}

该函数可用来确定分区个数!



从来不用别人的东西,要用,也先改成自己的再说!
2004-5-29 00:00
查看资料  发送邮件  发短消息 网志  OICQ (67154440)  编辑帖子  回复  引用回复
crshen
中级用户




积分 447
发帖 126
注册 2004-2-10
状态 离线
『第 6 楼』:  

result = spawnl(P_OVERLAY, "ghost.exe", "NULL", parameter1, "-fx", "-sure",
    NULL);

采用覆盖方式调用ghost.exe,比在shell中运行速度明显加快。



从来不用别人的东西,要用,也先改成自己的再说!
2004-5-29 00:00
查看资料  发送邮件  发短消息 网志  OICQ (67154440)  编辑帖子  回复  引用回复
crshen
中级用户




积分 447
发帖 126
注册 2004-2-10
状态 离线
『第 7 楼』:  


怎么不能上传文件啦,大家只好自己完善该程序了,有困难而又需要者,可留下E_mail,我可以发给你。



从来不用别人的东西,要用,也先改成自己的再说!
2004-5-29 00:00
查看资料  发送邮件  发短消息 网志  OICQ (67154440)  编辑帖子  回复  引用回复
zgywqm
初级用户




积分 155
发帖 18
注册 2003-10-26
状态 离线
『第 8 楼』:  

好东西,我要,谢谢!
E-mail:xiaoyu689@sina.com

2004-6-29 00:00
查看资料  发送邮件  发短消息 网志  OICQ (47859424)  编辑帖子  回复  引用回复
hhwwll
中级用户




积分 293
发帖 30
注册 2003-9-1
状态 离线
『第 9 楼』:  

我要,谢谢!
Email:hhwwll123@sohu.com

2004-6-30 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
profree
中级用户




积分 478
发帖 132
注册 2003-7-2
状态 离线
『第 10 楼』:  

这两天正在研究一键恢复,急需, email: xpzsj@126.com 谢谢

2004-6-30 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hugo_he_huan
中级用户

vista c3 1.0


积分 280
发帖 61
注册 2004-6-11
来自 四川
状态 离线
『第 11 楼』:  

我也要,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢......        
Email: hugo_he_huan@yahoo.com.cn

2004-7-5 00:00
查看资料  发短消息 网志  OICQ (361350753)  编辑帖子  回复  引用回复
gmy
版主

操作系统爱好者


积分 1113
发帖 392
注册 2002-11-11
状态 离线
『第 12 楼』:  

过些日子,我发布“GHOST8.0启动盘“,是批处理做的,一键恢复和高级选项在同一界面,直接按“确定”就是一键;自选参数后按“确定”也行。



DOS之家 http://doshome.com 站长 葛明阳
2004-7-7 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jastyg
中级用户





积分 219
发帖 82
注册 2005-10-29
状态 离线
『第 13 楼』:  

jastyg@163.com
也给我一份,谢谢

2005-11-1 11:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jpzsj
初级用户





积分 43
发帖 26
注册 2005-10-7
状态 离线
『第 14 楼』:  

每个人发一个发得起吗? 上传附件吧, 我也想要一份

2005-11-5 12:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
crshen
中级用户




积分 447
发帖 126
注册 2004-2-10
状态 离线
『第 15 楼』:  

这是以前做的,意义不大,后来我自己都丢了,建议使用三茗一键还原1.5.7

http://www.chinadforce.com/viewthread.php?tid=351390&fpage=1三茗一键还原 1.5.7 破解版下载页面

三茗《一键恢复》不依赖于操作系统,在本地硬盘上实现系统数据以及CMOS参数的动态保护与恢复。您的电脑安装本产品后,若染病毒了、上不成网了、玩不成游戏了、死机了、被黑客破坏了、系统崩溃了、越来越慢了……怎么办?仅需按下F9键,一两秒钟电脑恢复正常。
    功能特点: 
    独立于操作系统:本产品是位于操作系统之下的BIOS层面,完全独立于计算机的操作系统和文件系统。即便是操作系统完全崩溃,本产品仍可以独立实现计算机系统和CMOS参数的保护和恢复。
    瞬间保存与恢复:本软件产品采用三茗公司独创的系统保存与恢复的专利技术,它的保存与恢复操作均可在数秒完成,真正做到瞬间恢复。
    不占用硬盘实用空间:通过空闲磁盘空间构成的动态缓冲区,配合高效的专利硬盘映射算法,在既不占用数据实用磁盘空间,不影响系统性能的前提下,实现系统的动态保护与瞬间恢复功能。
    支持多种操作系统:Windows 9x/ME/NT/2000(Professional)/XP。
    全新病毒防范理念:对各种已知及未知病毒的系统侵袭具备全面“自愈”功能。
    用户密码保护:允许用户管理员设置密码保护,系统安全性更强。
    纯软件设计:与硬件产品比较,不仅产品的适用范围可以进一步扩大到笔记本电脑,而且避免了硬件冲突的可能,使产品的安装更加方便和灵活。
    智能化安装机制:独创的算法控制结构使得本软件的安装、使用和卸载均不会对原有系统及数据构成影响,实现全透明保护。



从来不用别人的东西,要用,也先改成自己的再说!
2005-11-6 22:57
查看资料  发送邮件  发短消息 网志  OICQ (67154440)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: