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

You are not allowed to 'backlinks'


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
Stop searching forever. Happiness is just next to you.


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.0019 sec