Page suivantePage pr�c�denteTable des mati�res

11. Modifier les inodes directement

Cette m�thode est apparemment beaucoup plus facile. Cependant, comme soulign� plus haut, elle ne peut pas venir � bout de fichiers occupant plus de 12 blocs.

Pour chaque inode que vous voulez r�cup�rer, vous devez mettre � 1 le nombre de liens, et � 0 la date de suppression. Cela peut �tre fait gr�ce � la commande mi (modifier inode) de debugfs. Voici un exemple de sortie concernant la modification de l'inode 148003 :

debugfs:  mi <148003> Mode    [0100644]
 User ID    [503]
 Group ID    [100]
 Size    [6065]
 Creation time    [833201524]
 Modification time    [832708049]
 Access time    [826012887]
 Deletion time    [833201524] 0
 Link count    [0] 1
 Block count    [12]
 File flags    [0x0]
 Reserved1    [0]
 File acl    [0]
 Directory acl    [0]
 Fragment address    [0]
 Fragment number    [0]
 Fragment size    [0]
 Direct Block #0    [594810]
 Direct Block #1    [594811]
 Direct Block #2    [594814]
 Direct Block #3    [594815]
 Direct Block #4    [594816]
 Direct Block #5    [594817]
 Direct Block #6    [0]
 Direct Block #7    [0]
 Direct Block #8    [0]
 Direct Block #9    [0]
 Direct Block #10    [0]
 Direct Block #11    [0]
 Indirect Block    [0]
 Double Indirect Block    [0]
 Triple Indirect Block    [0]

C'est-�-dire que je mets � 0 la date de suppression et le nombre de liens � 1, puis j'envoie juste un retour chariot pour chacun des autres champs. D'accord, ce n'est pas tr�s souple si vous avez beaucoup de fichiers � r�cup�rer, mais je pense que vous pourrez faire face. Si vous vouliez du velours, il fallait utiliser un � syst�me d'exploitation � graphique avec une jolie � corbeille �.

� propos, le texte de sortie de mi indique un champ � cr�ation � (creation time). Il est totalement mensonger (ou en tout cas trompeur) ! En fait, sur un syst�me de fichiers Unix, vous ne pouvez pas d�terminer quand un fichier a �t� cr��. Le champ st_ctime d'une struct stat fait r�f�rence � la date de modification de l'inode (inode change time), c'est-�-dire la derni�re fois qu'un quelconque des d�tails de l'inode a �t� chang�. Si finit la lessons d'huy.

Notez que les versions plus r�centes de debugfs que celle que j'utilise n'incluent probablement pas certains des champs de la liste donn�e plus haut (typiquement Reserved1 et des champs sur les fragments).

Une fois que vous aurez modifi� les inodes, vous pourrez quitter debugfs et taper :

# e2fsck -f /dev/hda5

L'id�e est que chacun des fichiers supprim�s a �t� litt�ralement � d�-supprim� �, mais qu'aucun d'entre eux n'appara�t en entr�e de r�pertoire. Le programme e2fsck peut le d�tecter, et ajoutera une entr�e dans le r�pertoire /lost+found du syst�me de fichiers (Donc, si la partition est normalement mont�e dans /usr, les fichiers vont appara�tre dans /usr/lost+found). Tout ce qui reste � faire est de redonner son nom � chaque fichier d'apr�s son contenu, et le remettre � sa place dans l'arborescence du syst�me de fichiers.

Quand vous lancerez e2fsck, vous obtiendrez des messages d'information, ainsi que des questions � propos des probl�mes � r�parer. R�pondez oui (yes) partout o� vous voyez `summary information' ou � chaque r�f�rence aux inodes que vous avez modifi�s. Tout le reste vous regarde, bien qu'il soit en g�n�ral une bonne id�e de r�pondre oui � toutes les questions. Lorsque e2fsck a termin�, vous pouvez remonter le syst�me de fichiers.

En fait, il y a un autre moyen que de demander � e2fsck de laisser les fichiers dans /lost+found : vous pouvez utiliser debugfs pour cr�er un lien vers l'inode dans le syst�me de fichiers. Utilisez la commande link de debugfs quand vous avez fini de modifier l'inode.

debugfs:  link <148003> toto.txt

Ceci cr�e un fichier appel� toto.txt dans ce que debugfs suppose �tre le r�pertoire courant ; toto.txt sera votre fichier. Vous aurez quand m�me besoin de lancer e2fsck pour corriger le `summary information', le nombre de blocs, etc.


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:26