Back to Top Last Update :

TOdisk - Hard disk backup & restore with "sector clone" TODISK-001.ZIP ( 62 Kb )
[ Simplifed Chinese ]    [ Traditional Chinese ]


TOdisk version 1.0 Alpha Copyright (c) 2006 by GOTOmsdos (Email: tdaim@sina.com)
有 時 用 GHOST 備 份 失 敗 , 可 能 文 件 出 了 什 麼 問 題 ...
就 自 己 寫 了 個 程 序 TOdisk 卻 成 功 地 備 份 了 , 用 扇 區 方 式 備 份 硬 盤 或 分 區 或 任 意 扇 區 , 支 持 壓 縮 和 分 卷 、 擴 展 分 區 、 連 續 任 務 ... 等 等 。
希 望 大 家 有 空 試 玩 !
運 行 環 境 : DOS ( 不 能 在 DOS 下 加 載 UDMA.SYS 驅 動 , 否 則 運 行 反 常 )
語 法 :
<DO mode> TOdisk SRC1[,SRCn...] TO DST1[,[DSTn...] [-[[d|p][q][m][n][ir][iw]]]
<LOOK mode> TOdisk [-D[n]|-P[[noz|noh|nozh|fn|f|l]|[n:n|A:]]]
Switch:
SRC/DST set: (DISK set, PARTITION set, DOSLETTER set, IMAGEFILE set)
1, DISK set>> 1 or 2...n
2, PARTITION set>> 1:2 or 2:3...n:n
3, DOSLETTER set>> C: or D:... Z:
4, IMAGEFILE set-- (c:\image.to)
--------------------(c:\image.to=Vn) [ Not Compressed ]
--------------------(c:\image.toz=Cn=K=Vn=E?) [ Compressed ]
( 鏡 象 文 件 名 , 如 不 壓 縮 建 議 後 綴 為 'TO' , 如 壓 縮 建 議 後 綴 為 'TOZ' , 以 免 跟 其 他 文 件 名 混 淆 , 不 過 程 序 並 不 強 制 這 樣 )
鏡 象 文 件 參 數 :
Cn C:compress 壓 縮 , n: 為 壓 縮 級 別 ( 1 - 9 )
K K:key 表 示 壓 縮 文 件 有 密 碼 。 默 認 沒 有 密 碼 , 有 K 表 示 要 有 密 碼 , 那 麼 當 程 序 創 建 壓 縮 鏡 象 時 , 會 要 求 用 戶 輸 入 密 碼 , 以 便 下 次 用 文 件 。 恢 復 到 硬 盤 前 , 也 要 用 戶 輸 入 密 碼 , 這 是 安 全 需 要 。 但 是 , 僅 有 K 只 會 對 第 一 個 壓 縮 文 件 要 求 密 碼 , 如 果 有 分 卷 , 不 會 後 面 的 分 卷 要 求 密 碼
Vn V:volume 表 示 有 分 卷 功 能 , 在 把 硬 盤 數 據 存 為 分 卷 文 件 時 , 必 須 要 用 戶 指 定 每 個 分 卷 的 大 小 ( 以 MB 為 單 位 ) , n 表 示 MB 數 字
E? E:every 表 示 對 每 個 壓 縮 的 分 卷 要 求 密 碼 , 如 果 沒 有 ? , 程 序 會 把 第 一 文 件 ( 母 卷 ) 的 密 碼 都 自 動 寫 入 後 面 的 分 卷 中 。 如 果 有 ? 表 示 對 每 個 壓 縮 的 分 卷 文 件 要 求 密 碼 , 並 且 停 下 來 等 待 用 戶 輸 入
-specify start sector (not allowed in IMAGE file set)
+specify the number of sectors to do
幾 個 有 用 的 開 關 :
自 由 模 式 ( 沒 有 -d 和 -p 參 數 )

其 實 , 這 是 卻 是 少 用 的 模 式 , 是 精 確 到 扇 區 的 方 式 , 可 以 任 意 指 定 要 處 理 的 起 始 扇 區 ( 前 綴 是 - ) 和 扇 區 操 作 數 ( 前 綴 是 + ) , 小 聯 想 : GRUB 也 是 用 + 表 示 要 加 載 的 數 據 塊 [ 扇 區 ] 的 個 數 )
如 :
1-100+200 表 示 從 硬 盤 1 的 開 始 扇 區 100 處 執 行 , 執 行 扇 區 數 為 200
文 件 參 數 也 支 持 + 操 作 符 , 但 不 支 持 - 操 作 符
技 術 上 , 是 可 以 支 持 的 , 但 是 要 在 文 件 的 海 量 之 處 都 作 上 記 號 , 將 極 大 降 低 文 件 讀 取 的 速 度
如 :
(e:\back=c=v100)+1000 表 示 總 共 執 行 文 件 含 有 的 總 扇 區 的 1000 個 扇 區
如 下 非 法 :
(e:\back=c=v100)-1000 試 圖 從 文 件 含 有 扇 區 的 第 1000 個 扇 區 處 執 行 , 但 非 法
這 種 模 式 對 RAW 數 據 的 恢 復 非 常 有 用 。也 就 是 用 盡 了 全 部 文 件 式 數 據 恢 復 工 具 不 能 找 到 數 據 的 情 況 下 , 就 要 借 助 於 扇 區 模 式 了 ...
二  匹 配 模 式 (包 括 硬 盤 模 式 ( -d)  和 分 區 模 式 ( -p) )
這 種 模 式 最 常 用 ,尤 其 是 分 區 模 式 .
這 種 模 式 由 於 處 理 的 是 格 式 數 據 (硬 盤 和 分 區 ), 所 以 要 匹 配 至
 少 是 原 數 據 塊 要 小 於 目 標 數 據 塊 ( 在 這 種 情 況 下 , 如 果 是 分
 區 模 式 , 除 了 把 源 分 區 的 分 區 ID 和 80/00 是 否 活 躍 標 志 共 兩 處
 , 兩 個 字 節 更 新 到 目 標 分 區 外 , 目 前 不 支 持 更 新 分 區 的 大 小 ,
 這 涉 及 到 搬 移 其 後 的 所 有 分 區 ! 而 且 , 對 於 一 般 用 戶 用 的 較
 少 , 一 般 都 是 哪 裡 來 哪 裡 去 的 , 起 到 一 個 備 份 恢 復 作 用 ... )

由 於 是 格 式 匹 配 模 式 ,所 以 不 允 許 使 用 - 和 + 操 作 符 .

匹 配 模 式 的 源 參 數 和 目 標 參 數 的 個 數 必 須 相 等 ,否 則 警 告 退 出
匹 配 模 式 支 持 文 件 參 數 .

除 了 分 區 模 式 要 用 源 分 區 的 分 區 ID 和 80/00 更 新 目 標 分 區 的 分
 區 表 , 多 任 務 的 匹 配 模 式 等 價 於 自 由 模 式 的 單 任 務 的 無 - + 的
 個 數 相 同 的 一 對 一 的 集 合 :

比 如 :

1,2 TO 3,4 -d
等 價 於 兩 次 操 作 :
1 TO 3 -d
2 TO 4 -d

但 不 等 價 於
1,2 TO 3,4
除 非 1,3大 小 相 同 , 2,4大 小 相 同

因 為 ,自 由 模 式 是 一 種 靈 活 的 模 式 ,前 後 任 務 是 向 續 接 替 的
比 如

硬 盤 1 總 扇 區 1000
硬 盤 2 總 扇 區 2000
硬 盤 3 總 扇 區 1500
硬 盤 4 總 扇 區 3000
  
1,2 TO 3,4
在 自 由 模 式 中 ,過 程 如 下 :

硬 盤 1 傳 遞 給 硬 盤 3 1000個 扇 區 ,退 出 (硬 盤 1 完 成 任 務 )
硬 盤 2傳 遞 給 硬 盤 3 500個 扇 區 ,硬 盤 3 退 出 (硬 盤 3 完 成 任 務 )
硬 盤 2傳 遞 給 硬 盤 4 1500 個 扇 區 , 硬 盤 2 退 出 (硬 盤 2 完 成 任 務 )
程 序 便 退 出 (因 為 源 和 目 標 已 經 有 一 方 完 成 了 )

程 序 這 樣 處 理 是 考 慮 到 靈 活 性 : 可 能 使 用 者 可 能 並 不 確 切 的
 知 道 各 個 分 區 , 硬 盤 的 精 確 大 小 等 等 東 西 , 但 是 又 想 完 成 前
 面 的 已 經 滿 足 條 件 的 數 據 ...


參 數

硬 盤 參 數 :
1
執 行 為 :
硬 盤 1 開 始 扇 區 0 處 理 扇 區 為 整 個 硬 盤 的 總 扇 區

分 區 參 數 :
1:1
執 行 為 :
硬 盤 1 分 區 1的 開 始 扇 區 處 理 扇 區 為 分 區 1的 總 扇 區

DOS 盤 符 參 數 :
C:
程 序 在 分 區 表 中 找 出 其 對 應 的 分 區 ,然 後 等 同 於 分 區 參 數

鏡 象 文 件 參 數
要 用 括 號 括 起 來 ()
完 全 的 參 數 如 下 :

(d:\image=c9=k=v1000=e?)  用 = 號 連 接

第 一 為 文 件 名 (8.3 格 式 )

Cn C(COMPRESS) 壓 縮 , 9 為 壓 縮 級 別 , ( 1 - 9 )

K (KEY) , 表 示 壓 縮 文 件 有 密 碼 . 默 認 沒 有 密 碼 , 有 K 表 示 要 有 密
 碼 , 那 麼 當 程 序 創 建 壓 縮 鏡 象 時 , 會 要 求 用 戶 輸 入 密 碼 , 以 便
 下 次 用 文 件 恢 復 到 硬 盤 前 , 也 要 用 戶 輸 入 密 碼 ,這 是 安 全 需 要
 . ( 但 是 , 僅 有 K 只 會 對 第 一 個 壓 縮 文 件 要 求 密 碼 , 如 果 有 分
 卷 , 不 會 後 面 的 分 卷 要 求 密 碼 )

Vn  V(Volume) 表 示 有 分 卷 功 能 , 在 把 硬 盤 數 據 存 為 分 卷 文 件 時 ,
 必 須 要 用 戶 指 定 每 個 分 卷 的 大 小 ( 以 MB 為 單 位 ) n 表 示 MB

V1000 表 示 以 每 1000MB 為 一 卷
( 補 充 : 當 文 件 參 數 在 左 邊 時 , 也 就 是 源 位 置 時 如 沒 有 V , 程
 序 將 只 處 理 一 個 文 件 , 不 擅 自 尋 找 是 否 有 分 卷 ( 因 為 這 樣 有
 可 能 自 做 主 張 了 . 如 果 有 V , 將 自 動 尋 找 其 分 卷 , 但 只 要 給 出
 這 個 V 即 可 , 無 需 n )

E?  E (Eevry) 表 示 對 每 個 壓 縮 的 分 卷 要 求 密 碼 , 如 果 沒 有 ? , 程
 序 會 把 第 一 文 件 ( 母 卷 ) 的 密 碼 都 自 動 寫 入 後 面 的 分 卷 中 . 如
 果 有 ? 表 示 對 每 個 壓 縮 的 分 卷 文 件 要 求 密 碼 , 並 且 停 下 來 等
 待 用 戶 輸 入 .
<LOOK mode> - 看 硬 盤 和 分 區 信 息
-Dn查 看 第 n 硬 盤
-D查 看 全 部 硬 盤
-P查 看 全 部 分 區
-Pnoz 或 -Pnozero不 顯 示 分 區 ID 為 0x00 的 分 區
-Pnoh 或 -Pnohidden不 顯 示 隱 藏 分 區
-Pnozh 或 -Pnozerohidden不 顯 示 分 區 ID 為 0x00 和 隱 藏 分 區
-Pfn 或 -Pfatntfs只 顯 示 FAT 及 NTFS 分 區
-Pf 或 -Pfat只 顯 示 FAT 分 區
-P:只 顯 示 DOS 下 盤 符 ( 也 就 是 非 隱 藏 的 FAT 系 列 )
-Pl 或 -Plinux只 顯 示 Linux 分 區


關 於 本 程 序 采 用 的 壓 縮 庫 ZLIB

ZLIB 壓 縮 比 相 當 高 , 采 用 優 化 高 效 的 LZ77 和 HUFFMAN 結 合 DEFLATE 方 式 。而 且 速 度 與 同 類 的 壓 縮 庫 相 比 要 快 的 多 ! ( 當 然 前 面 講 了 GHOST 采 用 的 是 文 件 模 式 , 所 以 快 不 是 GHOST 的 壓 縮 庫 塊 , 而 是 它 處 理 的 數 據 量 小 , 如 果 比 較 壓 縮 庫 , 應 該 是 與 GHOST 速 度 和 壓 縮 比 差 不 多 的 ... 能 達 到 平 均 每 秒 1.2MB ! )

ZLIB 網 址 http://www.zlib.net


本 程 序 的 局 限 性 和 待 增 加 的 功 能

由 於 是 DOS程 序 , 文 件 參 數 只 支 持 FAT系 列 的 盤 符

程 序 顯 示 出 的 分 區 總 表 中 的 DOS 盤 符 是 按 照 DOS 的 盤 符 分 配 規 律 推 測 出 的 , 不 一 定 准 確 ,尤 其 是 場 合 性 的 掛 載 額 外 的 驅 動 器 ( 如 U 盤 , 移 動 硬 盤 , 虛 擬 盤 等 ) , 僅 作 參 考 。 但 是 表 中 顯 示 的 分 區 數 字 是 沒 有 問 題 的 。

計 劃 加 入 處 理 指 定 的 鏡 象 中 的 第 幾 硬 盤 和 第 幾 分 區


幾 個 有 用 的 開 關 :
1  i|ignore ( ir|ignoreRead  iw|ignoreWrite)
忽 略 磁 盤 的 讀 寫 錯 誤 , 這 樣 的 話 , 就 不 會 因 為 較 少 的 介 質 問
 題 而 終 止 整 個 程 序 。

2 q | quiet
不 要 提 示 ,直 接 執 行 ( 但 對 諸 如 文 件 打 不 開 等 , 仍 然 要 跟 你 要
 文 件 名 的 ... 等 等 )

3 n | next
當 執 行 某 個 任 務 發 現 致 命 的 錯 誤 時 , 不 退 出 整 個 程 序 , 繼 續 執
 行 下 一 個 任 務 (但 仍 然 根 據 前 一 個 已 完 成 的 數 據 量 對 下 一 個
 任 務 的 數 據 量 作

更 新 )

4 m | mute
不 顯 示 信 息

這 四 個 參 數 的 地 點 :

1
可 在 兩 種 參 數 中 給 出

a
i 用 在 硬 盤 / 分 區 / 盤 符 參 數 組 : ( 用 = 連 接 )
如 :
1= i TO 2 ( 忽 略 讀 硬 盤 1 的 錯 誤 , 但 不 忽 略 硬 盤 2 的 寫 錯 誤 )
1:1 TO 2:3 = i ( 忽 略 寫 硬 盤 2分 區 3的 寫 錯 誤 , 但 不 忽 略 讀 硬 盤
 1 分 區 1 的 讀 錯 誤 )
e:=i TO 2:3=i ( 都 忽 略 )

但 是 忽 略 開 關 ( -i )不 能 用 在 文 件 參 數 中 ( 因 為 文 件 不 是 設 備
 。 如 果 在 讀 寫 文 件 的 過 程 中 DOS給 出 了 錯 誤 , 是 不 能 忽 略 過 的
 , 程 序 會 提 示 你 , 重 新 輸 入 文 件 名 )

b -ir -iw 用 在 後 面 的 獨 立 之 處 ( 對 全 部 任 務 起 作 用 )

如 :
1:2,E: TO 2:3,(BACK.TOZ=C) -ir -iw ( 忽 略 全 部 任 務 的 讀 錯 誤 和 寫 錯 誤 )

2 q | quiet  ( 沒 有 采 用 y , 以 免 跟 後 面 的 n 混 同 , 可 能 使 使 用
 者 誤 以 為 y 表 示 不 給 提 示 , n 表 示 給 提 示 ... )

可 以 用 在 任 何 地 方 ,包 括 文 件 參 數 組
如 用 在 參 數 組 ( 用 = 連 接 ) , 僅 對 參 數 組 起 作 用 :
1:1=q,2:3 TO 2:4,3:4

( 用 於 文 件 參 數 組 時 , 必 須 在 () 之 後 ) :
1:1,(FILE.Z=v)=q TO 4:3,2:3

如 用 在 後 面 的 獨 立 之 處 ( 用 - 連 接 ) , 對 全 部 任 務 起 作 用

3 n|next

可 以 用 在 任 何 地 方 , 包 括 文 件 參 數 組
如 用 在 參 數 組 , 僅 對 參 數 組 起 作 用 ,
如 用 在 後 面 的 獨 立 之 處 , 對 全 部 任 務 起 作 用

4 m|mute
可 以 用 在 任 何 地 方 ,包 括 文 件 參 數 組
如 用 在 參 數 組 , 僅 對 參 數 組 起 作 用 ,
如 用 在 後 面 的 獨 立 之 處 , 對 全 部 任 務 起 作 用


補 充 : 如 果 參 數 組 中 有 - + 操 作 符 , 那 麼 用 在 參 數 組 中 的 以 上 的 參 數 ( i | ignore, q | quiet, m | mute, n | next) 必 須 放 在 - 或 + 的 後 面 : ( 當 然 , 在 匹 配 模 式 -d , -p 中 , 本 來 就 不 能 有 - + 操 作 符 , 自 然 就 不 存 在 這 個 問 題 ) 1:1 TO 2:3-100+200= i 1:1 TO 2:3-100+200=q 1:1,2:3 TO 2:3-100+200=n,3:4 另 : 以 上 四 對 參 數 可 以 連 用 : 1:1,2:3 TO 2:3-100+200=i= q= m=n,3:4 1:2,E: TO 2:3,(BACK.TOZ=C) -q -m -n -ir -iw


本 版 本 的 更 新 如 下 :
1 除 了 解 壓 分 卷 鏡 象 到 硬 盤 / 分 區 又 未 指 定 操 作 扇 區 數 , 其 他 都 在 運 行 中 顯 示 任 務 中 的 MB 量
2 即 使 沒 有 n 參 數 , 如 遇 到 讀 或 寫 盤 錯 誤 , 都 給 出 詢 問 是 否 忽 略 的 提 示 , 這 樣 避 免 了 用 戶 未 給 n 參 數 時 也 能 給 用 戶 忽 略 微 小 的 讀 或 寫 盤 錯 誤 的 機 會
3 更 正 了 上 版 中 的 一 個 小 BUG :

如 果 目 標 位 置 的 文 件 參 數 沒 帶 扇 區 操 作 數 後 面 又 跟 有 參 數 組 , 即 使 是 匹 配 模 式 ( 有 -d 或 -p 參 數 ) 也 給 出 非 法 警 告
4 具 體 實 現 了 有 n 參 數 時 , 如 是 自 由 模 式 而 遇 到 退 出 錯 誤 時 , 在 繼 續 下 一 任 務 時 更 新 已 完 成 的 任 務 量 。
5 在 顯 示 分 區 總 表 中 , 把 GB / MB 一 同 更 改 為 MB , 這 樣 避 免 了 1.9G 只 顯 示 1G 的 缺 陷 ( 由 於 考 慮 到 程 序 的 體 積 , 未 使 用 浮 點 )


Revision History (Descending)
V1.2 alpha2006-09-15 Please refer to NEW.TXT (GB2312) or NEW_T.TXT (BIG5)
V1.1 alpha2006-09-15 Improved base on suggestions in China DOS Union's forum
V1.0 alpha2006-09-02 Improved base on suggestions in China DOS Union's forum
Before V1.02006-08-29 Initial Release