· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Docbook Sgml/Ext2fs-Undeletion-Dir-Struct

You are not allowed to 'info'


Ext2fs Undeletion of Directory Structures mini-HOWTO

Ext2fs Undeletion of Directory Structures mini-HOWTO

Tomas Ericsson

          
        

Á¤Áö¿ë

ÀÌ ¹®¼­´Â Aaron Crane¿¡ ÀÇÇØ ¾²¿©Áø Ext2fs-Undeletion mini-HOWTO¸¦ º¸ÃæÇϱâ À§ÇÑ °ÍÀÌ´Ù. ³ª´Â ÀÌ ¹®¼­¸¦ Àбâ Àü¿¡ ±× ¹®¼­¸¦ ¸ÕÀú ÀÚ¼¼È÷ Àб⸦ °­·ÂÈ÷ ÃßõÇÑ´Ù.

¿©±â¼­ ³ª´Â ½Ç¼ö·Î ½ÇÇà½ÃŲ rm -rf¸í·É¿¡ ÀÇÇØ Áö¿öÁø ÆÄÀÏ ´ÜÀ§°¡ ¾Æ´Ñ Àüü µð·ºÅ丮 ±¸Á¶¸¦ º¹±¸ÇÏ´Â Á÷Á¢ÀûÀÎ ¹æ¹ýÀ» Á¦½ÃÇÒ °ÍÀÌ´Ù.

고친 과정
고침 v0.1.114 November 2000고친이 T.E.
Initial release.
고침 v0.1.129 November 2001고친이 Á¤ Áö¿ë
ÃÖÃÊ ¹ø¿ª

1. ¼Ò°³

1.1. Ã¥ÀÓÀÇ ÇÑ°è

º» ÀúÀÚ´Â ÀÌ ¹®¼­ÀÇ ³»¿ëÀÌ ¾ß±âÇÒ ¼ö ÀÖ´Â ¾î¶°ÇÑ °á°ú¿¡ ´ëÇؼ­µµ Ã¥ÀÓÀ» ÁöÁö ¾Ê½À´Ï´Ù. ¸ðµç ÀÏÀº ´ç½ÅÀÇ Ã¥ÀÓ ÇÏ¿¡¼­ ¼öÇàµÇ¾î¾ß ÇÕ´Ï´Ù.


1.2. ÀúÀÛ±Ç

º» ¹®¼­´Â http://www.linuxdoc.org/manifesto.html ¿¡¼­ ¾òÀ» ¼ö ÀÖ´Â LDP license ÇÏ¿¡¼­¸¸ ¹èÆ÷µÉ ¼ö ÀÖ´Ù.


1.3. Çǵå¹é

¾î¶² ÇüÅÂÀÇ Çǵå¹éÀ̵ç ȯ¿µÇÑ´Ù. ÀÌ ¹®¼­ÀÇ ¿À·ù ¼öÁ¤Àº ¸Å¿ì Áß¿äÇÏ´Ù. ¸¸¾à, ´©±º°¡°¡ ÀÌ ¹®¼­¸¦ À¯¿ëÇÏ°Ô »ç¿ëÇÏ¿´´Ù¸é, ³ª´Â ±×°Í¿¡ ´ëÇØ µè´Â °ÍÀ» ÁÁ¾ÆÇÑ´Ù.


1.4. ÀÌ ¹®¼­ÀÇ »õ ¹öÀü

ÀÌ ¹®¼­ÀÇ ÃֽŠ¹öÀüÀº http://www.matematik.su.se/~tomase/ext2fs-undeletion/ ¿¡¼­ ¾òÀ» ¼ö ÀÖ´Ù.


1.5. °¨»ç

¿À·ù¸¦ ¾Ë·ÁÁØ ´ÙÀ½ÀÇ »ç¶÷µé¿¡°Ô °¨»çÇÑ´Ù. (¾ËÆĺª ¼ø¼­)

  • Gabriel Kihlman

  • Richard Nyberg

  • Mats Oldin

  • Tobias Westerblom


1.6. ¹è°æ

ÀÌ ¹®¼­´Â ³»°¡ ¾ó¸¶ Àü °Þ¾ú´ø º¹±¸ ¹®Á¦¸¦ ÇØ°áÇÏ´Â µµÁß¿¡ ¾²¿©Á³´Ù. ³ª´Â ¸î°³ÀÇ µð·ºÅ丮¸¦ ÇϳªÀÇ µð½ºÅ©·ÎºÎÅÍ ´Ù¸¥ µð½ºÅ©·Î ¿Å±â·Á ÇÏ°í ÀÖ¾ú´Ù. ±×·¯³ª ¹®Á¦´Â ¿Å±â·Á Çß´ø µð½ºÅ©°¡ À̵¿ Á÷ÈÄ, ¸ðÁ¾ÀÇ ÀÌÀ¯·Î ÀÎÇØ ¿À·ù°¡ ¹ß»ýÇÏ¿´´Ù.

±×·¡¼­ ³ª´Â À̵¿½ÃŲ µð·ºÅ丮¸¦ ¿øº» µð½ºÅ©·Î ¿Å±â°íÀÚ Çß´Ù. ±×·¯³ª ¾à 40000°³ÀÇ º¹±¸ÇÒ ÆÄÀÏ·Î ÀÎÇÏ¿© ±×µéÀ» ÀÏÀÏÀÌ ¼ÕÀ¸·Î ã¾Æ¼­ º¹±¸ÇϱⰡ ¾î·Á¿öÁ³´Ù.

³ª´Â µð·ºÅ丮ÀÇ Àüü ±¸Á¶¸¦ µÇµ¹¸®°í ½Í¾ú´Ù. ¶È°°Àº »óȲÀº ¸¸¾à ³»°¡ ±× µð·ºÅ丮µéÀ» ´ë»óÀ¸·Î rm -rf ¸¦ ½ÇÇàÇ߾ ÀϾÀ» °ÍÀÌ´Ù.


2. ÀüÁ¦Á¶°Ç

¹«¾ùº¸´Ù ¿µÇâ¹ÞÀº ÆÄƼ¼ÇÀ» ÃÖ´ëÇÑ »¡¸® ¾Æ¹«°Íµµ ÇÏÁö ¾ÊÀºÃ¤·Î ¾ð¸¶¿îÆ® ½ÃÅ°´Â °ÍÀÌ ¸Å¿ì Áß¿äÇÏ´Ù. ¸¸¾à ´ç½ÅÀÌ »ç°íÈÄ¿¡ ÀÌ ÆÄƼ¼Ç¿¡¼­ ÆÄÀÏÀ» Ä«ÇÇÇϰųª Çß´Ù¸é, ÀÌ ¹æ¹ýÀÌ ¼º°øÇÒ °¡´É¼ºÀº ¸Å¿ì ³·¾ÆÁø´Ù.

¶ÇÇÑ, ²Ï ÃÖ±ÙÀÇ Ä¿³Î ¹öÀüÀ» °¡Á®¾ß¸¸ ÇÑ´Ù. ¿Ö³ÄÇϸé 2.0.x ³ª ±× ÀÌÇÏÀÇ ¹öÀü Ä¿³Î¿¡¼­´Â ÀÌ °úÁ¤ÀÌ 12ºí·Ï ÀÌ»óÀÇ µ¥ÀÌÅ͸¦ °¡Áø ÆÄÀÏ¿¡ ´ëÇؼ­´Â ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀ̱⠶§¹®ÀÌ´Ù.

³ª´Â º¹±¸ÇÏ´Â ÇÑ ¹æ¹ýÀ» ¼³¸íÇÒ °ÍÀ̳ª, ´ëºÎºÐÀÇ ¿¡·¯¿¡ ´ëÇÑ ¼³¸íÀº »ý·«ÇÒ °ÍÀÌ´Ù. ¸¸¾à ´ÙÀ½¿¡ ¼³¸íµÈ °úÁ¤ÀÌ Àß ÀÛµ¿ÇÏÁö ¾Ê´Â °Í °°À¸¸é °Å±â¼­ ¸ØÃß°í ´õÀÌ»ó ÇÏÁö ¾Ê±â¸¦ ÃßõÇÑ´Ù.


3. Áغñ

Áö¿öÁø ÆÄÀÏÀÌ ÀÖ´Â ÆÄƼ¼ÇÀ» ¾ð¸¶¿îÆ®ÇÑ´Ù. ÀÌ ÆÄƼ¼ÇÀ» /dev/hdx1À̶ó ÇÏ°Ú´Ù.

        # umount /dev/hdx1

/dev/hdx1ÀÇ Å©±â¸¦ ºí·Ï´ÜÀ§·Î üũÇÑ´Ù.

        # fdisk -l /dev/hdx

ÀÌÁ¦ ¾ÈÀüÀ» ±âÇϱâ À§ÇÏ¿© /dev/hdx1°ú °°Àº Å©±âÀÇ ¶Ç´Ù¸¥ ÆÄƼ¼ÇÀÌ ÇÊ¿äÇÏ´Ù. ´ç½ÅÀÌ /dev/hdy¿¡ ºñ¾îÀÖ´Â Çϵåµå¶óÀ̺긦 °¡Áö°í ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.

        # fdisk /dev/hdy

/dev/hdx1°ú °°Àº »çÀÌÁîÀÇ ÆÄƼ¼ÇÀ» »õ·Î ¸¸µç´Ù. ¿©±â¼­ »çÀÌÁî´Â ºí·Ï ´ÜÀ§(°¢ ºí·ÏÀº 1024kB)·Î ³ªÅ¸³½ /dev/hdx1ÀÇ »çÀÌÁîÀÌ´Ù.

참고: ³ª´Â fdisk 2.10f ¹öÀüÀ» »ç¿ëÇÑ´Ù. ¸¸¾à ´ç½ÅÀÌ ´Ù¸¥ ¹öÀüÀÇ fdisk ¸¦ »ç¿ëÇÑ´Ù¸é, ¾Æ·¡ÀÇ ³»¿ëÀº ¾à°£ ´Ù¸¦ ¼ö ÀÖ´Ù.

        fdisk: n      <- »õ·Î¿î ÆÄƼ¼ÇÀ» ¸¸µç´Ù.
        fdisk: p      <- Primary ÆÄƼ¼Ç.
        fdisk:        <- ÃʱâÄ¡ÀΠù° ½Ç¸°´õ¸¦ ¼±ÅÃÇϱâ À§ÇØ ±×³É ¿£Å͸¦ ´©¸¥´Ù.
        fdisk: +sizeK <- /dev/hdx1°ú °°Àº »çÀÌÁîÀÇ ÆÄƼ¼ÇÀ» ¸¸µç´Ù.
        fdisk: w      <- Å×À̺íÀ» µð½ºÅ©¿¡ ±â·ÏÇÏ°í Á¾·áÇÑ´Ù.

ÀÌÁ¦ ¿øº» ÆÄƼ¼ÇÀÇ ³»¿ëÀ» »õ·Î¿î ÆÄƼ¼ÇÀ¸·Î º¹»çÇÑ´Ù.

        # dd if=/dev/hdx1 of=/dev/hdy1 bs=1k

ÀÌ °úÁ¤Àº ÆÄƼ¼ÇÀÇ Å©±â¿¡ µû¶ó ²Ï ¿À·¡°É¸± ¼öµµ ÀÖ´Ù. ¸¸¾à ºí·Ï»çÀÌÁî bs¸¦ ´Ã¸°´Ù¸é, ´õ ºü¸£°Ô ÇÒ ¼ö ÀÖ°ÚÁö¸¸, ±×·² °æ¿ì¿¡´Â ÆÄƼ¼ÇÀÇ Å©±â°¡ bs ·Î ³ª´©¾î ¶³¾îÁ®¾ß ÇÑ´Ù.

ÀÌÁ¦ºÎÅÍ ¿ì¸®´Â À߸øµÇ´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ ¿øº» ÆÄƼ¼ÇÀÇ º¹»çº»¸¸À» °¡Áö°í ÀÛ¾÷ÇÒ °ÍÀÌ´Ù.


4. Áö¿öÁø µð·ºÅ丮ÀÇ inode¸¦ ã±â

¿ì¸®´Â Áö¿öÁø µð·ºÅ丮ÀÇ inode ¹øÈ£µéÀ» ãÀ» °ÍÀÌ´Ù.

        # debugfs /dev/hdy1

Áö¿öÁø µð·ºÅ丮°¡ ¿ø·¡ À§Ä¡Çß´ø °÷À¸·Î À̵¿ÇÑ´Ù. debugfs ¾È¿¡¼­´Â ls ³ª cd ·Î À̵¿ÇÒ ¼ö ÀÖ´Ù.

        debugfs: ls -l

À§ÀÇ ¸í·É¿¡ ´ëÇÑ outputÀ¸·Î ´ÙÀ½°ú °°Àº ¿¹½Ã¸¦ µé ¼ö ÀÖ´Ù.

        179289  20600      0      0       0 17-Feb-100 18:26 file-1
        918209  40700    500    500    4096 16-Jan-100 15:18 file-2
        160321  41777      0      0    4096  3-Jun-100 06:13 file-3
        177275  60660      0      6       0  5-May-98  22:32 file-4
        229380 100600    500    500   89891 19-Dec-99  15:40 file-5
        213379 120777      0      0      17 16-Jan-100 14:24 file-6

À§ ³»¿ëÀÇ °¢ ÇʵåµéÀ» ¼³¸íÇϸé,

  1. Inode ¹øÈ£.

  2. ¸Ç ¾Õ µÎ(ȤÀº ù) ¼ýÀÚ´Â inodeÀÇ Á¾·ù¸¦ ÀǹÌÇÑ´Ù.

    2 = ¹®ÀÚ µð¹ÙÀ̽º

    4 = µð·ºÅ丮

    6 = ºí·Ï µð¹ÙÀ̽º

    10 = ÀÏ¹Ý ÆÄÀÏ

    12 = ½Éº¼¸¯ ¸µÅ©

    ³²Àº ³× ¼ýÀÚ´Â Unix¿¡¼­ Á¤ÇØÁö´Â °ÍÀÌ´Ù.

  3. ¼ýÀڷΠǥÇöµÈ ¼ÒÀ¯ÁÖ.

  4. ¼ýÀڷΠǥÇöµÈ ¼ÒÀ¯ ±×·ì.

  5. ¹ÙÀÌÆ®·Î ³ªÅ¸³½ Å©±â.

  6. ³¯Â¥ (¿©±â¼­ ¿ì¸®´Â Y2K ¹ö±×¸¦ º¼ ¼ö ÀÖ´Ù =)).

  7. ½Ã°£.

  8. ÆÄÀÏÀ̸§.

ÀÌÁ¦ »óÀ§ µð·ºÅ丮¸¦ µð½ºÅ©¿¡ ´ýÇÁÇÏÀÚ. ¿©±â¼­ inode ´Â ±×¿¡ ÇØ´çÇÏ´Â inode ¹øÈ£¸¦ °¡¸®Å²´Ù ('<' ¿Í '>'¸¦ »©¸ÔÁö ¾Êµµ·Ï ÇؾßÇÑ´Ù.).

        debugfs: dump <inode> debugfs-dump

debugfs¿¡¼­ ºüÁ®³ª¿Â´Ù.

        debugfs: quit


5. ´ýÇÁµÈ µð·ºÅ丮ÀÇ ºÐ¼®

ÀÐÀ» ¼ö ÀÖ´Â ÇüÅ·Π´ýÇÁµÈ inode¸¦ º¸ÀÚ.

        # xxd debugfs-dump | less

¸ðµç ¿£Æ®¸®´Â ´Ù¼¸°³ÀÇ Çʵå·Î ±¸¼ºµÈ´Ù. ù µÎ Çʵå´Â ¿ª¼øÀ¸·Î ¹ÙÀÌÆ®°¡ ¹è¿­µÇ¾îÀÖ´Ù. À̴ ù¹ø° ¹ÙÀÌÆ®°¡ Á¦ÀÏ ³·Àº ÀÚ¸®ÀÇ ¼ö¶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù.

°¢ ÇʵåÀÇ ¼³¸í.

  1. 4 ¹ÙÀÌÆ® - Inode ¹øÈ£.

  2. 2 ¹ÙÀÌÆ® - µð·ºÅ丮 ¿£Æ®¸® ±æÀÌ.

  3. 1 ¹ÙÀÌÆ® - ÆÄÀÏÀ̸§ ±æÀÌ (1-255).

  4. 1 ¹ÙÀÌÆ® - ÆÄÀÏÀÇ Á¾·ù.

    0 = ¾Ë¼ö¾øÀ½

    1 = ÀÏ¹Ý ÆÄÀÏ

    2 = µð·ºÅ丮

    3 = ¹®ÀÚ µð¹ÙÀ̽º

    4 = ºí·° µð¹ÙÀ̽º

    5 = FIFO

    6 = SOCK

    7 = ½Éº¼¸¯ ¸µÅ©

  5. ÆÄÀÏÀ̸§ (1-255ÀÚ).

¸¸¾à µð·ºÅ丮ÀÇ ¾î¶² ¿£Æ®¸®°¡ Áö¿öÁ®¾ß ÇÑ´Ù¸é, Áö¿öÁ®¾ß ÇÒ ¿£Æ®¸® ¹Ù·Î ¾Õ¿¡ ÀÖ´Â ¿£Æ®¸®ÀÇ µÎ¹ø° Çʵ尡 Áö¿öÁ®¾ß ÇÒ ¿£Æ®¸®ÀÇ µÎ¹ø° ÇÊµå °ª¸¸Å­ Áõ°¡µÈ´Ù.

¸¸¾à, ÆÄÀÏÀ̸§ÀÌ ´õ ªÀº °ÍÀ¸·Î ¹Ù²î¸é, ¼¼ ¹ø° Çʵ尪ÀÌ ÁÙ¾îµç´Ù.

¸Ç ù ¿£Æ®¸®´Â '.'À¸·Î Ç¥ÇöµÇ´Â ±× µð·ºÅ丮 ÀÚ½ÅÀÌ´Ù.

¿ì¸®°¡ ´ÙÀ½°ú °°Àº µð·ºÅ丮 ¿£Æ®¸®µéÀ» °¡Áö°í ÀÖ´Ù°í ÇÏÀÚ.

         c1 02 0e 00 40 00 05 01 'u' 't' 'i' 'l' 's'

±×·¯¸é inode´Â 16Áø¼ö·Î e02c1ÀÌ µÉ °ÍÀÌ°í, ÀÌ´Â 10Áø¼ö·Î 918209ÀÌ´Ù. ´ÙÀ½ ¿£Æ®¸®´Â 64¹ÙÀÌÆ®(16Áø¼ö·Î 40) µÚ¿¡ À§Ä¡ÇÏ°Ô µÉ °ÍÀÌ°í, ¿ì¸®´Â ÆÄÀÏ À̸§ÀÌ 5ÀÚ("utils")·Î ±¸¼ºµÈ °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ±×¸®°í ÆÄÀÏÀÇ Á¾·ù´Â ÀÏ¹Ý ÆÄÀÏÀÓÀ» ¾Ë ¼ö ÀÖ´Ù.

ÀÌÁ¦ µð·ºÅ丮ÀÇ inode ¹øÈ£¸¦ 10Áø¼ö·Î ´Ù½Ã °è»êÇÏÀÚ.

¸¸¾à À̸¦ ¼ÕÀ¸·Î °è»êÇÏ°í ½ÍÁö ¾Ê´Ù¸é, ³»°¡ C·Î ¸¸µç ÀÛÀº ÇÁ·Î±×·¥À» »ç¿ëÇضó. ÀÌ ÇÁ·Î±×·¥Àº µð·ºÅ丮 ´ýÇÁ( 4절¿¡¼­ ¼³¸íµÈ debugfs À¸·Î ¸¸µé¾îÁø´Ù )¸¦ ÀÔ·ÂÀ¸·Î ¹Þ°í, °¢ ¿£Æ®¸®ÀÇ inode¹øÈ£¿Í ÆÄÀÏÀ̸§À» stdout¿¡ Ãâ·ÂÇÑ´Ù.

ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°±â Àü¿¡, ´ýÇÁ¸¦ hex¿¡µðÅÍ·Î ºÒ·¯µé¿© µÇ»ì¸®°íÀÚ ÇÏ´Â µð·ºÅ丮 ¿£Æ®¸® ¹Ù·Î ¾Õ ¿£Æ®¸®ÀÇ µð·ºÅ丮 ¿£Æ®¸® ±æÀÌÇʵ带 Á¶Á¤ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ±×·¯³ª, ÀÌ´Â °£´ÜÇÏ´Ù. ¸¸¾à ¾ÕÂÊ ¿£Æ®¸®ÀÇ ÇÊµå °ªÀ» x¶ó ÇÏ°í, µÇ»ì¸®°íÀÚ ÇÏ´Â ¿£Æ®¸®ÀÇ ÇÊµå °ªÀ» y¶ó Çϸé, x¸¦ x - y·Î ¹Ù²Ù¸é µÈ´Ù.

http://www.matematik.su.se/~tomase/ext2fs-undeletion/ ¿¡¼­ e2dirana (ext2fs directory analyse)¶õ ÇÁ·Î±×·¥À» ±¸ÇÒ ¼ö ÀÖ´Ù.


6. Áö¿öÁø inodeµéÀ» ¿øÀ§Ä¡ ½ÃÅ°±â

Áö¿öÁø inodeµéÀÇ ¸ñ·ÏÀ» ¾ò´Â´Ù.

        # echo lsdel | debugfs /dev/hdy1 > lsdel.out

¹®Á¦´Â ¿©±â¼­ debugfs°¡ Å©±â°¡ 0ÀÎ ÆÄÀÏ(´ç½ÅÀº ¾Æ¸¶µµ /etcµð·ºÅ丮¿¡¼­ ÀÌ·¯ÇÑ °ÍµéÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù)ÀÇ inode ¹øÈ£¸¦ ÁÖÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ÀÌ ¹®Á¦¿¡ ´ëÇÑ ÇØ°áÃ¥Àº 9절 °ú 11절¿¡¼­ Á¦½ÃÇϵµ·Ï ÇÏ°Ú´Ù.

"lsdel.out"À» ¹®¼­ ÆíÁý±â·Î ºÒ·¯¿Â´Ù. inodeµéÀÇ ¸ñ·ÏÀº ½Ã°£ ¼ø¼­´ë·Î Á¤·Ä µÇ¾îÀÖÀ» °ÍÀÌ´Ù. ´ç½ÅÀÌ rm -rf¸¦ ¾ðÁ¦ Çß´ÂÁö¸¦ ±â¾ïÇØ º¸¾Æ¶ó. ¾Æ¸¶µµ ±×°ÍÀº ´ç½ÅÀÌ ¸¶Áö¸·À¸·Î Áö¿î °ÍÀ̾úÀ» °ÍÀÌ°í ¸ñ·ÏÀÌ ½Ã°£¼øÀ¸·Î Á¤·ÄµÇ¾îÀֱ⠶§¹®¿¡ ±×°ÍµéÀº ¸ñ·ÏÀÇ ¸Ç ¸¶Áö¸·¿¡ ÀÖÀ» °ÍÀÌ´Ù. ÇÊ¿äÇÏÁö ¾ÊÀº °ÍµéÀ» ¸ðµÎ Áö¿ì°í, À̸¦ "lsdel.out-selected"·Î ÀúÀåÇÑ´Ù.

ÀÌÁ¦ inode¸¦ Á¦¿ÜÇÑ ¸ðµç Á¤º¸¸¦ Áö¿î´Ù.

        # cut -b 1-8 lsdel.out-selected | tr -d " " > inodes

È®½ÇÈ÷ Çϱâ À§Çؼ­, À§¿¡¼­ ãÀº Áö¿öÁø µð·ºÅ丮µéÀÇ inode°¡ ¸ñ·Ï¿¡ ÀÖ´ÂÁö È®ÀÎÇÏÀÚ.

        # grep ^inode$ inodes

¿©±â¼­ inode ´Â ±×¿¡ ÇØ´çÇÏ´Â inode¹øÈ£ÀÌ´Ù.


7. inodeµéÀ» È°¼ºÈ­½ÃÅ°±â

ÀÌÁ¦ Áö¿öÁø inodeµéÀÇ Ç÷¡±×µéÀ» Á¶Á¤ÇؾßÇÑ´Ù.

"make-debugfs-input"À̶õ ÆÄÀÏÀ» ¸¸µé°í, ´ÙÀ½ 6ÁÙÀ» ³Ö¾î¶ó.

        #!/bin/sh
        awk '{ print "mi <" $1 ">\n"\
                     "\n\n\n\n\n\n\n"\
                     "0\n"\
                     "1\n"\
                     "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" }'

ÀÌ´Â inode¸¦ Á÷Á¢ ¼öÁ¤ÇÒ ¶§, »ç¶÷ÀÇ ÀÔ·ÂÀ» ½Ã¹Ä·¹ÀÌÆ® ÇÒ °ÍÀÌ´Ù. ¿ì¸®´Â Áö¿öÁø ½Ã°£À» 0À¸·Î ÇÏ°í, ¸µÅ© ¼ýÀÚ ¸¦ 1·Î ÇÒ °ÍÀÌ´Ù.

참고: ³ª´Â debugfs 1.18 ¹öÀüÀ» »ç¿ëÇÏ°í ÀÖ´Ù. ¸¸¾à ´Ù¸¥ ¹öÀüÀ» »ç¿ëÇÏ°í ÀÖ´Ù¸é, ´ç½ÅÀº À§ ½ºÅ©¸³Æ®ÀÇ ¿£ÅÍ °¹¼ö¸¦ ÀûÀýÇÏ°Ô Á¶ÀýÇØ¾ß ÇÒ °ÍÀÌ´Ù.

ÀÌÁ¦ inode¸¦ ¼öÁ¤ÇÏÀÚ.

        # ./make-debugfs-input < inodes | debugfs -w /dev/hdy1 | tail -c 40

¸¸¾à, ¸ðµç °ÍÀÌ Àß ¼öÇàµÇ¾ú´Ù¸é, À§ ¸í·ÉÀº "Triple Indirect Block [0] debugfs:"¶ó°í Çϸ鼭 ³¡³ª¾ß ÇÑ´Ù.


8. µð·ºÅ丮 ¿£Æ®¸®¸¦ ´õÇϱâ

debugfsÀ» Àбâ-¾²±â ¸ðµå·Î ½ÃÀÛÇÑ´Ù.

        # debugfs -w /dev/hdy1

ÀÌÁ¦ ´ç½ÅÀº Áö¿öÁø µð·ºÅ丮°¡ À§Ä¡Çß´ø °÷¿¡ µð·ºÅ丮¸¦ »õ·Î ³Ö¾î¾ß ÇÑ´Ù.

        debugfs: link <inode> directoryname

¿©±â¼­ inode ´Â inode ¹øÈ£ÀÌ°í, directoryname Àº µð·ºÅ丮 À̸§ÀÌ´Ù.

¸µÅ©¸¦ Ãß°¡ÇÑ´ÙÀ½, µð·ºÅ丮°¡ ÇöÀç µð·ºÅ丮¿¡ Ãß°¡µÈ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´ç½ÅÀº ÀÌÁ¦ ±×µéÀÇ ³»¿ëÀ» È®ÀÎ ÇÒ ¼ö ÀÖ´Ù (debugfs¿¡¼­).

±×·¯³ª °¢ µð·ºÅ丮ÀÇ Å©±â°¡ 0À̱⠶§¹®¿¡ ÀÌ´Â °íÃÄÁ®¾ßÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ½©¿¡¼­ ls ¸í·ÉÀ¸·Î º¸¾ÒÀ» ¶§, ºñ¾îÀÖ´Â °ÍÀ¸·Î º¸ÀÏ °ÍÀÌ´Ù.

debugfs¿¡¼­ ºüÁ®³ª¿Â´Ù.

        debugfs: quit


9. Àç°è»ê

ÀÌÁ¦ Å©±â¿Í üũ¼¶À» ´Ù½Ã °è»êÇϱâ À§ÇØ e2fsck À» ½ÇÇà½Ãų Â÷·ÊÀÌ´Ù.

참고: ³ª´Â e2fsck 1.18 ¹öÀüÀ» ¾²°í ÀÖ´Ù. ¸¸¾à ´Ù¸¥ ¹öÀüÀ» »ç¿ëÇÏ°í ÀÖ´Ù¸é, ÆĶó¹ÌÅͳª ÀÔ/Ãâ·ÂÀÌ ¹Ù²îÁö ¾Ê¾Ò´ÂÁö È®ÀÎÇØ¾ß ÇÒ °ÍÀÌ´Ù.

¸¸¾à ´ç½ÅÀÌ º¹±¸ÇÏ°íÀÚ ÇÏ´Â ÆÄÀÏ Áß Å©±â°¡ 0ÀÎ ÆÄÀÏÀÌ Çϳªµµ ¾ø´Ù¸é ¾Æ·¡ÀÇ ³»¿ëÀ» ÇÑ µÚ, ÀÌ ±ÛÀÇ ³ª¸ÓÁö ºÎºÐÀº ³Ñ¾î°¡µµ µÈ´Ù. (¹°·Ð ´ç½ÅÀº ÀÎÀÚ y¸¦ ¾²Áö ¾ÊÀ» ¼öµµ ÀÖ°ÚÁö¸¸, ±×·² °æ¿ì ¸ðµç Áú¹®¿¡ ÀÏÀÏÀÌ ¼ÕÀ¸·Î ´ë´äÇØ¾ß ÇϹǷÎ, ¸¹Àº ½Ã°£ÀÌ °É¸± °ÍÀÌ´Ù.

        # e2fsck -f -y /dev/hdy1 > e2fsck.out 2>&1

¸¸¾à ´ç½ÅÀÌ Å©±â°¡ 0ÀÎ ÆÄÀϵéÀ» µÇ»ì¸®°í ½Í´Ù¸é, ¿£Æ®¸®¸¦ Áö¿ì°Ú³Ä´Â Áú¹®¿¡ no ¶ó°í ´ë´äÇؾßÇÏ°í, Áö¿öµµ µÇ´Â ¿£Æ®¸® ¿¡ ´ëÇؼ­´Â yes ¶ó°í ´ë´äÇÏ¸é µÈ´Ù.

¾Æ·¡ 7ÁÙÀÇ ³»¿ëÀ» "e2fsck-wrapper"¶õ ÆÄÀÏ¿¡ ³Ö´Â´Ù.

        #!/usr/bin/expect -f
        set timeout -1
        spawn /sbin/e2fsck -f $argv
        expect {
            "Clear<y>? " { send "n" ; exp_continue }
            "<y>? "      { send "y" ; exp_continue }
        }

À§ ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃŲ´Ù.

        # ./e2fsck-wrapper /dev/hdy1 > e2fsck.out 2>&1

e2fsck¿¡¼­ ¾î¶»°Ô ÆÄƼ¼ÇÀ» ó¸®Çß´ÂÁö º¸±âÀ§Çؼ­´Â, e2fsck.outÀÇ ³»¿ëÀ» º¸¾Æ¶ó.


10. ¸¸¾à /lost+found µð·ºÅ丮°¡ ºñ¾îÀÖÁö ¾Ê´Ù¸é

¸î¸î µð·ºÅ丮³ª ÆÄÀÏÀÌ Á¤È®ÇÑ À§Ä¡¿¡ ³ªÅ¸³ªÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. ´ë½Å¿¡ ±× ÆÄÀϵéÀº /lost+foundÆÄÀÏ¿¡ ±×µéÀÇ inode¸¦ ÆÄÀÏÀ̸§À¸·Î ÇÏ¿© ³ªÅ¸³µÀ» °ÍÀÌ´Ù.

ÀÌ °æ¿ì´Â, ".." µð·ºÅ丮 ¿£Æ®¸®¿¡ ´ëÇÑ Æ÷ÀÎÅÍ°¡ Áõ°¡µÇ¾î ±× ´ÙÀ½ µð·ºÅ丮¸¦ °¡¸®Å°°í ÀְԵȴÙ. (ÀÌ·± Çö»óÀÌ ÀϾ´Â ÀÌÀ¯´Â ¾Ë ¼ö ¾ø´Ù. ¾Æ¸¶ ÆÄÀϽýºÅÛÀÇ ¹ö±×ÀÎ °Í °°´Ù)

µð·ºÅ丮ÀÇ ¿¬°á¼ºÀÌ °Ë»çµÇ´Â "e2fsck.out"ÀÇ pass 3 À» Á¶»çÇغ¸¾Æ¶ó. ¾Æ¸¶µµ °Å±â¼­ ¿µÇâ¹ÞÀº µð·ºÅ丮¸¦ ãÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. 4절¿¡ ³ª¿Â´ë·Î µð½ºÅ©¸¦ ´ýÇÁÇÏ¿©¶ó.

e2dirana ¸¦ p ÀÎÀÚ¸¦ ÁÖ°í, ½ÇÇà½ÃÅ°°í, ÀÎÀÚ ¾øÀÌ ¶Ç ½ÇÇà½ÃÄѶó.(ÀÌ´Â ".." µð·ºÅ丮 ¿£Æ®¸®ÀÇ Æ÷ÀÎÅ͸¦ º¯È­½Ãų °ÍÀÌ´Ù). ¿©±â¼­ dump´Â ´ýÇÁµÈ µð·ºÅ丮ÀÌ´Ù.

        # e2dirana dump > dump1
        # e2dirana -p dump > dump2

µÎ °¡Áö Ãâ·ÂµÈ °ÍÀ» ºñ±³ÇØ º¸¾Æ¶ó.

        # diff dump1 dump2

¸¸¾à µÎ °¡Áö Ãâ·ÂÀÌ °°Áö ¾Ê´Ù¸é µð·ºÅ丮ÀÇ ¾î¶² ÆÄÀÏÀΰ¡°¡ ¾ø¾îÁø °ÍÀÌ´Ù. ±×·¯¸é ÇØ´çÇÏ´Â ÆÄÀÏÀ» /lost+found ¿¡¼­ ã¾Æ¼­ ¿Ã¹Ù¸¥ À§Ä¡·Î ¿Å°ÜÁÖ¾î¶ó. ¿©±â¼­ dest ´Â ¸ñÀû µð·ºÅ丮¿¡ ´ëÇÑ ½Éº¼¸¯ ¸µÅ©ÀÌ´Ù. Ãâ·ÂÀ» ½ºÅ©¸³Æ®¿¡ ³Ö°í, ´ç½ÅÀÌ µ¿ÀÇÇÑ´Ù¸é ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÄѶó.

        # diff dump1 dump2 |\
          tail -n $[`diff dump1 dump2 | wc -l`-1] | cut -b 3- |\
          sed -e 's/^\([^ ]*\) \(.*\)$/mv lost+found\/#\1 dest\/"\2"/' |\
          sed -e 's/!/"\\\!"/g'

ÀÌ °úÁ¤À» /lost+found°¡ ºñ°Ô µÉ ¶§±îÁö ¹Ýº¹ÇÑ´Ù.


11. ¸¶Áö¸· ¼ÕÁú

¸¸¾à 9절 ¿¡¼­ Å©±â°¡ 0ÀÎ ÆÄÀϵéÀ» µÇ»ì¸®±â·Î °áÁ¤ ÇßÀ¸¸é ¹®Á¦°¡ Çϳª ³²¾ÆÀÖ´Ù. ¿Ö³ÄÇϸé ÀÌ ÆÄÀϵéÀº 0ÀÌ ¾Æ´Ñ »èÁ¦ ½Ã°£°ú 0ÀÇ ¸µÅ© ¼ýÀÚ¸¦ °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù. ÀÌ´Â e2fsck°¡ ½ÇÇàµÉ ¶§¸¶´Ù ÀÌ ÆÄÀϵéÀ» »èÁ¦Ç϶ó°í ¹°¾îº¸°Ô µÉ °ÍÀ̱⠶§¹®ÀÌ´Ù.

ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â °¡Àå ½¬¿î ¹æ¹ýÀº Àüü µð·ºÅ丮 ±¸Á¶¸¦ ´Ù¸¥ °÷(°°Àº ÆÄƼ¼Ç »ó¿¡ À־ µÈ´Ù)À¸·Î º¹»ç ÇÏ°í, ¿øº» ÆÄÀϵéÀ» Áö¿î ÈÄ, ´Ù½Ã ¿ø·¡ À§Ä¡·Î º¹»çÇØ¿À´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô ÇÏÁö ¾ÊÀ¸¸é, ÀÏÀÏÀÌ inode¸¦ ¾Ë¾Æ³»¼­ debugfs·Î ¹Ù²ãÁÖ¾î¾ß ÇÑ´Ù.

ÀÌÁ¦ ¸ðµç °ÍÀÌ Àß µÇ¾ú´Ù¸é, ¸ðµç °ÍµéÀÌ »èÁ¦µÇ±â ÀüÀÇ »óÅ°¡ µÇ¾î¾ß ÇÑ´Ù. ÃÖ¼ÒÇÑ ³»°¡ ÀÌ ±ÛÀ» ¾²¸é¼­ Çغ» Å×½ºÆ®¿¡¼­´Â ±×·¨´Ù. ±â¾ïÇÒ °ÍÀº ¹Ýµå½Ã 2절¿¡ ³ª¿Â ÀüÁ¦Á¶°ÇÀ» ¸¸Á·ÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù.


12. Âü°í¹®Çå

Linux Ext2fs Undeletion mini-HOWTO, v1.3

  • Aaron Crane

Design and Implementation of the Second Extended Filesystem, http://e2fsprogs.sourceforge.net/ext2intro.html

  • Rémy Card, Laboratoire MASI--Institut Blaise Pascal

  • Theodore Ts'o, Massachussets Institute of Technology

  • Stephen Tweedie, University of Edinburgh

Kernel Source for Linux 2.2.16

  • linux/include/linux/ext2_fs.h

  • linux/fs/ext2/namei.c


ID
Password
Join
You are dishonest, but never to the point of hurting a friend.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:29
Processing time 0.0018 sec