引用:
作者天天開心
刪除的原理大致如各位說的
但我的疑問是檔案所在FAT被清空,
怎找回分散不連續的磁區,組回一個完整的檔案?
搜尋檔案特徵我覺得怪怪的
因為沒有索引,磁區的內容僅是0101二進制無意義的資料不是嗎?
像是純文字檔,內容是ANSI的字母,也沒什麼特徵才對
還是謝謝各位的解說
|
在FAT中根目錄與FAT表是分開的,磁碟運作是使用叢集(亦稱磁簇)行處理。
在DOS下FAT表有2份,主/副,當2表不一樣時,表示有幽靈磁區被佔用,這時就用掃瞄方式來找出。
2份FAT表所佔的空間為一個叢集
再來就是根目錄資料區,通常8.3檔名格式,每一檔名資料佔32BYTES,而根目錄最大只可記下512筆。此區也給一個叢集。
FAT表第1,2個連結內容分別由前二個叢集佔位,因此第一個檔的叢集連結記錄由第3個開始。
當刪檔時,只會在檔名第一個字填入刪除標記,其他資料未變動。
在磁碟空間夠多或是根目錄未被全用完,則新檔是不會優先使用己刪的地方,會選擇空的區,因為效率問題,所以諾頓磁碟重整程式內有一項"目錄整理"作的就是清掉被刪的記錄項。
而NTFS又是有自己的運作規則了
表1:
代碼:
BOOT SECTOR 記錄
偏移值 資料大小 說明
00H 3位元組 跳址指令(V5版為EB3C90H)。
3∼0AH 8位元組 系統名稱。
0BH以後為BPB資料:
0BH+00H 2位元組 每磁區之位元組數(內定為0200H)。
0BH+02H 位元組 每磁簇之磁區數。
0BH+03H 2位元組 由磁區0開始的保留磁區數。
0BH+05H 位元組 FAT個數(內定為02)。
0BH+06H 2位元組 根目錄登錄總數。
0BH+08H 2位元組 磁區總數(大於65535則此值為0)。
0BH+0AH 位元組 媒質指示。
0BH+0BH 2位元組 每一FAT所佔之磁區數。
0BH+0DH 2位元組 每磁軌之磁區數。
0BH+0FH 2位元組 磁頭數。
0BH+11H 4位元組 隱藏磁區數(內定為0)。
0BH+15H 4位元組 若8H=0則為磁區總數(內定為0)。
0BH+19H 位元組 實體磁碟機數。
0BH+1AH 位元組 保留。
0BH+1BH 位元組 擴充開機記錄之記名欄。
0BH+1CH 4位元組 由日期時間而得的序列號碼。
0BH+20H 11位元組 版本標記。
0BH+2BH 8位元組 保留(內存FAT型式;為FAT12或FAT16之文字)。
表二
代碼:
FAT之記錄方式:
12BIT方式:
偏移
00 磁片型式碼。
1,2 不用一般為FFFFH。
3以後 FAT資料,每一磁簇佔1.5位元組。
16BIT方式:
00 磁片型式。
1∼3 不用,為FFFFFFH。
4以後 FAT資料,每磁簇佔2位元組。
FAT狀態值:
0H 未使用。
2H∼(F)FF6H 檔的連續值標。
(F)FF7H 受損之磁簇。
(F)FF8H∼(F)FFFH 檔之結尾。
表3
代碼:
目錄結構
偏移值 資料大小 說明
00H 8位元組 檔名(不足8字時以空格填滿)。(第1字為E5H表刪除。)
08H 3位元組 延伸名(不足時填空白)。
0BH 位元組 檔屬性。
0CH 10位元組 保留。
16H 2位元組 檔時間。
18H 2位元組 檔日期。
1AH 2位元組 起始磁簇。
1CH 4位元組 檔大小。
參考:
檔名掃瞄程式 PART2 by INT25h