亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 7204 | 回復(fù): 4
打印 上一主題 下一主題

[SCO UNIX] 文件不小心刪除了,能恢復(fù)嗎? 急待中!。。。 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2003-04-14 16:09 |只看該作者 |倒序?yàn)g覽
文件不小心刪除了,能恢復(fù)嗎? 急待中。。。!

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2003-04-14 16:18 |只看該作者

文件不小心刪除了,能恢復(fù)嗎? 急待中!。。!

幫幫我。!

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2003-04-14 16:43 |只看該作者

文件不小心刪除了,能恢復(fù)嗎? 急待中。。。!

怎么辦呀?????

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2003-04-14 16:50 |只看該作者

文件不小心刪除了,能恢復(fù)嗎? 急待中!。。!

來(lái)源:軟件世界 李貴林 陳朝暉


  與DOS/Windows不同,UNIX文件被刪除后很難恢復(fù),這是由UNIX獨(dú)特的文件系統(tǒng)結(jié)構(gòu)決定的。UNIX文件目錄不像DOS/Windows那樣,文件即使被刪除之后仍保存有完整的文件名、文件長(zhǎng)度、始簇號(hào)(即文件占有的第一個(gè)磁盤(pán)塊號(hào))等重要信息;相反,它的文件信息全部依靠一種被稱(chēng)為i節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)來(lái)描述,而i節(jié)點(diǎn)在相應(yīng)文件被刪除之后即被清空,因此,要想直接恢復(fù)被刪除的文件內(nèi)容幾乎是不可能的,必須另辟蹊徑。本文結(jié)合實(shí)際,討論幾種文件恢復(fù)策略及其關(guān)鍵步驟的具體實(shí)現(xiàn)。

  一、UNIX文件系統(tǒng)結(jié)構(gòu)

  我們知道,UNIX是以文件卷作為其文件系統(tǒng)存儲(chǔ)格式的,而不同的UNIX系統(tǒng),文件卷格式是有差異的,甚至即使是同一UNIX操作系統(tǒng)的不同版本,其文件系統(tǒng)未必完全相同,例如:SCO UNIX 4.1版與5.0版文件系統(tǒng)結(jié)構(gòu)就有明顯差異,但只要是UNIX系統(tǒng),其文件卷的基本結(jié)構(gòu)是一致的。分析如下:

  不管是什么UNIX系統(tǒng),不管什么版本,其文件卷至少包括引導(dǎo)塊、超級(jí)塊、i節(jié)點(diǎn)表、數(shù)據(jù)區(qū)等幾個(gè)部分。除此之外,不同UNIX版本可能還有不同的差異。例如:SCO UNIX系統(tǒng)的位圖索引塊和位圖塊AIX的邏輯卷表等。這些系統(tǒng)的特殊性不影響下文的恢復(fù)策略,故這里不作討論,僅介紹標(biāo)準(zhǔn)UNIX文件卷結(jié)構(gòu)。

  1. 引導(dǎo)塊

  位于文件卷最開(kāi)始的第一扇區(qū),這512字節(jié)是文件系統(tǒng)的引導(dǎo)代碼,為根文件系統(tǒng)所特有,其他文件系統(tǒng)這512字節(jié)為空。

  2. 超級(jí)塊

  位于文件系統(tǒng)第二扇區(qū),緊跟引導(dǎo)塊之后,用于描述本文件系統(tǒng)的結(jié)構(gòu)。如i節(jié)點(diǎn)長(zhǎng)度、文件系統(tǒng)大小等,其結(jié)構(gòu)存放于/usr/include/sys/filsys.h中,其結(jié)構(gòu)如下:

  struct filsys

  {

  ushort s_isize; /*磁盤(pán)索引節(jié)點(diǎn)區(qū)所占用的數(shù)據(jù)塊數(shù)*/

  daddr_t s_fsize; /*整個(gè)文件系統(tǒng)的數(shù)據(jù)塊數(shù)*/

  short s_nfree; /*在空閑塊登錄表中當(dāng)前登記的空閑塊數(shù)目*/

  daddr_t s_free[NICFREE]; /*空閑塊登記表*/

  short s_ninode; /*空閑索引節(jié)點(diǎn)數(shù)*/

  ino_t s_inode[NICINOD]; /*空閑節(jié)點(diǎn)登記表*/

  char s_flock; /*加鎖標(biāo)志位*/

  char s_ilock; /*節(jié)點(diǎn)加鎖標(biāo)志位*/

  char s_fmod; /*超級(jí)塊修改標(biāo)志*/

  char s_ronly; /*文件系統(tǒng)只讀標(biāo)志*/

  time_t s_time; /*超級(jí)塊上次修改的時(shí)間*/

  short s_dinfo[4]; /*設(shè)備信息*/

  daddr_t s_tfree; /*空閑塊總數(shù)*/

  ino_t s_tinode; /*空閑節(jié)點(diǎn)總數(shù)*/

  char s_fname[6]; /*文件系統(tǒng)名稱(chēng)*/

  char s_fpack[6];

  long s_fill[13]; /*填空位*/

  long s_magic; /*指示文件系統(tǒng)的幻數(shù)*/

  long s_type; /*新文件系統(tǒng)類(lèi)型*/

  };

  3. i節(jié)點(diǎn)表

  i節(jié)點(diǎn)表存放在超級(jí)塊之后,其長(zhǎng)度是由超級(jí)塊中的s_isize字段決定的,其作用是用來(lái)描述文件的屬性、長(zhǎng)度、屬主、屬組、數(shù)據(jù)塊表等,其數(shù)據(jù)結(jié)構(gòu)在/usr/include/sys/ino.h中,如下:

  struct dinode

  {

  ushort di_mode;

  short di_nlink;

  ushort di_uid;

  ushort di_gid;

  off_t di_size;

  char di_addr[40];

  time_t di_atime;

  time_t di_mtime;

  time_t di_ctime;

  };

  4. 目錄結(jié)構(gòu)

  UNIX所有文件均存放于目錄中,目錄本身也是一個(gè)文件。目錄存放文件的機(jī)制如下:首先,目錄文件本身也象普通文件一樣,占用一個(gè)索引節(jié)點(diǎn),其次,由這個(gè)索引節(jié)點(diǎn)得到目錄內(nèi)容的存放位置,再次,從其內(nèi)容中取出一個(gè)個(gè)的文件名和它對(duì)應(yīng)的節(jié)點(diǎn)號(hào),從而訪問(wèn)一個(gè)文件。目錄結(jié)構(gòu)如下:

  索引節(jié)點(diǎn)號(hào)(2字節(jié)) .(本目錄)(14字節(jié))

  索引節(jié)點(diǎn)號(hào)(2字節(jié)) ..(父目錄)(14字節(jié))

  索引節(jié)點(diǎn)號(hào)(2字節(jié)) 文件名(14字節(jié))

  索引節(jié)點(diǎn)號(hào)(2字節(jié)) 文件名(14字節(jié))

  索引節(jié)點(diǎn)號(hào)(2字節(jié)) 文件名(14字節(jié))

  由上可知文件名是依靠目錄來(lái)描述的,文件的內(nèi)容和其他信息則由索引節(jié)點(diǎn)來(lái)描述。

  二、文件的刪除過(guò)程

  UNIX下刪除一個(gè)文件的過(guò)程很簡(jiǎn)單,那就是釋放索引節(jié)點(diǎn)表和文件占用的數(shù)據(jù)塊,清空文件占用的索引節(jié)點(diǎn),但不清除文件內(nèi)容。但刪除文件與刪除目錄的處理不盡相同,不同命令刪除文件的過(guò)程也不相同。

  1. 刪除一個(gè)文件

  UNIX 刪除一個(gè)文件的具體步驟是:根據(jù)文件i節(jié)點(diǎn)的地址表逐一釋放文件占用的磁盤(pán)數(shù)據(jù)塊,然后清空相應(yīng)的節(jié)點(diǎn),最后釋放i節(jié)點(diǎn)。

  2. 刪除一個(gè)目錄

  刪除一個(gè)目錄的過(guò)程:首先逐一刪除目錄里的所有文件,然后刪除目錄。目錄本身也是一個(gè)文件,故刪除方法與刪除文件一致。

  3. 幾種不同的刪除命令

  .rm 命令

  一般刪除命令,刪除過(guò)程上述已說(shuō)明。

  .mv命令

  格式:mv 文件1 文件2

  處理過(guò)程是將文件2的數(shù)據(jù)塊釋放,然后將文件1的名稱(chēng)改為文件2,再釋放文件2所占的i節(jié)點(diǎn)。

  . >; 命令

  格式:>;文件名

  若產(chǎn)生一個(gè)新文件,>;命令僅僅申請(qǐng)一個(gè)i節(jié)點(diǎn),而不寫(xiě)入任何文件內(nèi)容;若清空一個(gè)已經(jīng)存在的文件,則釋放文件所占的數(shù)據(jù)塊,并將文件長(zhǎng)度清零。

  三、被刪文件的恢復(fù)策略

  要恢復(fù)被刪除的文件,只能根據(jù)刪除后留下的東西去做文章。文件被刪除后留下了什么呢?由上述分析可知:其一、留下了文件的內(nèi)容;其二、留下了“現(xiàn)場(chǎng)”。文件的恢復(fù)策略只能從這兩個(gè)方面來(lái)分析。以下談幾種恢復(fù)策略。

  1.根據(jù)磁盤(pán)現(xiàn)場(chǎng)進(jìn)行恢復(fù)

  如果文件被刪除,現(xiàn)場(chǎng)未被破壞(即文件被刪除后硬盤(pán)未發(fā)生過(guò)寫(xiě)操作),而且假定只刪除了一個(gè)文件,那么可根據(jù)系統(tǒng)的分配算法進(jìn)行恢復(fù)。因?yàn)橄到y(tǒng)建立一個(gè)文件時(shí),必定根據(jù)某一特定的分配算法決定文件占用的數(shù)據(jù)塊位置。而當(dāng)該文件被刪除后,它所占用的數(shù)據(jù)塊被釋放,又回到系統(tǒng)的分配表中,這時(shí)如果重新建立一個(gè)文件,系統(tǒng)根據(jù)原來(lái)的分配算法分配出的數(shù)據(jù)塊必定跟該文件原來(lái)占用的數(shù)據(jù)塊一致,而且我們知道,UNIX文件最后一數(shù)據(jù)塊尾部多出的字節(jié)是全部置0的,據(jù)此只要調(diào)用系統(tǒng)的數(shù)據(jù)分配算法,在系統(tǒng)中一塊塊的申請(qǐng)數(shù)據(jù)塊,因?yàn)閁NIX文件最后一個(gè)數(shù)據(jù)塊尾部多出的字節(jié)全部為0,所以,只要發(fā)現(xiàn)一個(gè)分配出的數(shù)據(jù)塊中尾部全為0,即可認(rèn)為文件結(jié)束,由此可確定文件長(zhǎng)度和內(nèi)容,進(jìn)而實(shí)現(xiàn)恢復(fù)。方法如下:

 、派暾(qǐng)一個(gè)索引節(jié)點(diǎn),即向系統(tǒng)申請(qǐng)創(chuàng)建一個(gè)新文件名而不寫(xiě)入任何內(nèi)容。如:#>;/tmp/xx

  ⑵調(diào)用系統(tǒng)分配數(shù)據(jù)塊算法getnextfreeblock()得到一個(gè)數(shù)據(jù)塊號(hào),記入某一地址表變量中。

 、亲x出這個(gè)數(shù)據(jù)塊,判斷其尾部是否全部連續(xù)為0,若不是,則回到(2),若是,則進(jìn)行(4)。

 、仁紫扔孟到y(tǒng)函數(shù)fstat得到/tmp/xx的i節(jié)點(diǎn)號(hào),然后將(2)步所得的地址表寫(xiě)入索引節(jié)點(diǎn)的地址表中(注意間址問(wèn)題),并根據(jù)數(shù)據(jù)塊個(gè)數(shù)和最后一塊中有效數(shù)據(jù)長(zhǎng)度計(jì)算出文件大小,寫(xiě)入i節(jié)點(diǎn)的di_size字段。

 、苫貙(xiě)系統(tǒng)的索引節(jié)點(diǎn)表即可。

  需要說(shuō)明的是,第一,系統(tǒng)分配數(shù)據(jù)塊的算法因不同的UNIX版本而不同;第二,有的UNIX如SCO UNIX 5.0版,其空閑數(shù)據(jù)塊的分配和回收是使用一種動(dòng)態(tài)鏈表的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的,它們的文件恢復(fù)更加容易,只要在空閑鏈表中的表尾去尋找即可,筆者另行描述。

  2. 根據(jù)內(nèi)容恢復(fù)。

  若現(xiàn)場(chǎng)已被破壞,即硬盤(pán)發(fā)生過(guò)寫(xiě)操作,那么只好根據(jù)內(nèi)容來(lái)恢復(fù)。而且,由于UNIX是一個(gè)多進(jìn)程、多用戶(hù)系統(tǒng),它每一次開(kāi)關(guān)機(jī)或硬件、通訊故障等都會(huì)記錄系統(tǒng)日志、.sh_history等,硬盤(pán)現(xiàn)場(chǎng)被破壞可能性極大。因此討論按內(nèi)容恢復(fù)的方法具有更大的實(shí)用價(jià)值。筆者經(jīng)過(guò)實(shí)際探索得出下列四種恢復(fù)策略供參考。

  ⑴關(guān)鍵字搜索法

  如果知道被刪除的文件內(nèi)容中若干字節(jié)的內(nèi)容,而且該文件長(zhǎng)度又不超過(guò)一個(gè)磁盤(pán)塊,那么可以在整個(gè)文件系統(tǒng)中搜索這一字節(jié)串,得出一個(gè)文件所在的數(shù)據(jù)塊,將它們的塊號(hào)填入一個(gè)i節(jié)點(diǎn),即可恢復(fù)一個(gè)文件,搜索文件系統(tǒng)的算法很簡(jiǎn)單,說(shuō)明如下:

  a. #df -k 確定文件系統(tǒng)的設(shè)備文件名(如/dev/root)

  b.用下述函數(shù)搜索,若成功,返回?cái)?shù)據(jù)塊號(hào),反之返回-1。其中fsname是文件系統(tǒng)的設(shè)備名,如/dev/root,comp()參數(shù)是實(shí)現(xiàn)搜索條件的函數(shù)。

  long searchfs(char *fsname , int comp())

  {

  FILE *fp;

  char buf[1024];

  long i=0;

  fp=fopen(fsname,"r";

  while (!feof(fp))

  {

  fread(buf,1024,1,fp);

  if (comp()) /* 檢查是否符合搜索條件 */

  return i; /* 若成功返回塊號(hào) */

  i++;

  }

  fclose(fp);

  return -1; /* 未找到符合條件的塊,返回-1*/

  }

 、凭_長(zhǎng)度搜索法

  如果知道被刪除文件的精確長(zhǎng)度(字節(jié)數(shù)),那么可根據(jù)一個(gè)數(shù)據(jù)塊的大小,計(jì)算出文件的最后一個(gè)數(shù)據(jù)塊中數(shù)據(jù)的精確長(zhǎng)度,該數(shù)據(jù)塊中其他字節(jié)必然是全0。根據(jù)這一條件,通過(guò)搜索整個(gè)文件系統(tǒng),找出其中符合條件的數(shù)據(jù)塊,若出現(xiàn)多個(gè)塊符合要求,則還需要根據(jù)其他條件區(qū)分。但不管怎樣,根據(jù)精確長(zhǎng)度分析也是恢復(fù)數(shù)據(jù)的一個(gè)策略。

 、莾(nèi)容關(guān)聯(lián)法

  如果知道文件內(nèi)容中存在某種可實(shí)現(xiàn)的關(guān)聯(lián),例如文件的校驗(yàn)和,或者文件內(nèi)容的某種上下文關(guān)系,那么也可通過(guò)搜索整個(gè)文件系統(tǒng),通過(guò)反復(fù)嘗試尋找符合關(guān)聯(lián)條件的磁盤(pán)數(shù)據(jù)塊,進(jìn)而恢復(fù)一個(gè)文件。

  ⑷環(huán)境比較法

  如果知道刪除文件所在的文件系統(tǒng)的安裝過(guò)程,那么,另行找一臺(tái)完全相的機(jī)器,按原來(lái)完全相同的步驟安裝相同版本的UNIX和相應(yīng)的其他軟件,可以想象,新的機(jī)器環(huán)境會(huì)與原來(lái)的環(huán)境基本相同,比較兩個(gè)機(jī)器上相同文件系統(tǒng)的內(nèi)容,可以推斷出被刪除文件的大致位置,至少可以大大減少查找的范圍,一旦查找的范圍足夠小時(shí),可以用逐個(gè)觀察和嘗試的方法結(jié)合其他條件恢復(fù)數(shù)據(jù),降低恢復(fù)的難度,增加恢復(fù)的可靠性。

  UNIX系統(tǒng)下文件系統(tǒng)恢復(fù)的具體實(shí)現(xiàn)依賴(lài)于不同操作系統(tǒng)和不同版本的具體文件系統(tǒng)結(jié)構(gòu)和磁盤(pán)塊分配算法。本文試圖總結(jié)出一種一般性的思路和策略,限于篇幅,不能詳細(xì)討論它們的具體實(shí)現(xiàn)過(guò)程。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2003-04-14 18:56 |只看該作者

文件不小心刪除了,能恢復(fù)嗎? 急待中!。。。

好長(zhǎng),總算看完了,很有收獲,謝!
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP