[ 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 alpha | 2006-09-15 |
Please refer to NEW.TXT (GB2312) or NEW_T.TXT (BIG5) |
V1.1 alpha | 2006-09-15 |
Improved base on suggestions in China DOS Union's forum |
V1.0 alpha | 2006-09-02 |
Improved base on suggestions in China DOS Union's forum |
Before V1.0 | 2006-08-29 |
Initial Release
|
|