Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOFT : TCT] Recuperer des documents detruits
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Trevoke
Advocate
Advocate


Joined: 04 Sep 2004
Posts: 4099
Location: NY, NY

PostPosted: Mon Nov 14, 2005 1:54 pm    Post subject: [SOFT : TCT] Recuperer des documents detruits Reply with quote

Ceci est une traduction du mode d'emploi pour récupérer un fichier avec tct (emerge tct).
Toute la documentation pour tct est, à l'heure ou j'écris ces lignes, dans /usr/share/doc/tct-1.15-r1, donc c'est là qu'il faut aller voir pour de plus amples informations!

Tout d'abord, voici une liste de problèmes:
  1. Tu n'as pas accès a root
  2. Tu ne connais rien à Unix
  3. Tu es pressé
  4. Le fichier est plus gros que 15-20 ko


Ensuite, il te faut:
  1. Une connaissance de base de ton système
  2. De l'espace libre sur un disque dur (ET SURTOUT PAS SUR LA PARTITION OÙ TU AS PERDU LES FICHIERS). Environ 220% de la place libre sur cette partition, d'ailleurs.
  3. Au moins quelques heures de temps libre


En gros, tu vas lancer unrm pour récupérer les données d'un système de fichiers et les sauver sur un autre. Ensuite tu lances lazarus et ensuite tu passes les résultats au peigne fin.

#1 sur quel système de fichiers on est?.. Mais c'est ou sur ton disque, aussi? quelle partition? Ça, c'est pour trouver combien de place libre il y a dessus, comme ça tu peux chercher une autre partition avec la place dont tu as besoin. (df -h)

#2 sauver les blocs non-alloués du système de fichiers. Encore une fois, N'UTILISE PAS LA MÊME PARTITION!
Alors, admettons que tu aies /dev/sda1 (où tu as perdu le fichier) et /dev/sda2 (qui a, bien sûr, environ 2,5 fois plus d'espace libre que /dev/sda1). Il faut
a) décider où sur /dev/sda2 tu vas sauvegarder les données. Admettons que ce soit sur /path/to/TCT

b) taper :
Code:
# cd /path/to/TCT
# unrm /dev/sda1 > /path/to/TCT/unrm_output


Maintenant on attend.
Voila, si le fichier est encore sur le disque, il est maintenant quelque part dans /path/to/TCT/unrm_output
Maintenant si tu t'y connais tu peux parser le binaire, mais continuons..

#3 Lance lazarus sur le résultat. En général ça sera comme ça:
Code:
# lazarus -h unrm_output


-h --> crée de l'HTML qu'on peut donc voir avec un fichier.

#4 maintenant c'est compliqué. Il y a deux méthodes à suivre. Si tu connais quelques mots ou un mot rare du fichier, ou si le fichier est un peu spécial, utilise la méthode A, sinon, utilise la méthode B.

MÉTHODE A

Si tu as des images, remarque, c'est simple, tu peux faire comme ça (remplace 'xv' par ton éditeur d'images:
(en supposant que tu es dans le répertoire où il y a unrm_output)
Code:
$ xv blocks/*.gif blocks/*.jpg


Admettons que tu cherches un fichier qui a le mot "Studebaker" dedans. C'est assez sympa, parce que c'est rare, donc les chances que plusieurs fichiers aient ce mot sont assez restreintes...
Donc, tu utilises ton meilleur copain, grep sur les blocs qui ont ete sauvegardés:

Code:
$  grep -il studebaker blocks/* > matching_files


--> -i ignore les majuscules/minuscules, et -l liste les noms de fichiers.

Si vous voyez un résultat, examinez le(s) fichier)s listé(s) avec un bon pager comme less **. Si vous trouvez, bravo!

La méthode indiquée au-dessus peut échouer avec une erreur comme "Argument list too long" quand il y a trop de fichiers. Dans cette situation, utilisez la commande ci-dessous, plus robuste mais un peu plus longue à taper:

Code:
$ find blocks -type f -print | xargs grep -il studebaker >matching_files


Si vous cherchez quelque chose de moins unique, pensez à des mots clés qui peuvent vous aider (comme votre nom, votre employeur, etc etc). Vous pouvez écrire quelque chose comme ceci :

Code:
$ egrep -il 'keyword1|keyword2|...' blocks/*.txt > matching_files


Les fichiers log (syslog, message, etc), même s'ils sont souvent éparpillés sur tout le disque à cause de la façon dont ils sont écrits (quelques lignes à la fois), sont en fait, potentiellement, simples à récuperer - et dans le bon ordre - grâce au merveilleux time stamp sur chaque ligne. La solution la plus simple (jusqu'à ce qu'un meilleur analyseur de logs soit écrit) est de faire ceci : (le tr est dedans pour retirer les NULL; les commandes comme sort n'aiment pas les NULLs dans les fichiers avec lesquels elle travaillent !)

Code:
$ cat blocks/*.l.txt | tr -d '\000' | sort -u > all-logs


Et ensuite, y a plus qu'à vérifier. Des petits morceaux seront probablement perdus (à cause de la fragmentation), mais c'est un bon début.

Il est très facile de mélanger certaines données, comme le code C, avec d'autres programmes et du texte, donc un mélange de la méthode grep & le browser est parfois utile (un peu plus sur le browser dans la méthode B).

Une autre bonne façon de trouver du code source: si tu connais un fichier #include spécifique que le code utilise, ou une ligne d'output spécifique que le programme sort -

Code:
$ grep -l rpcsvc/sm_inter.h blocks/*.[cpt].txt


Ceci touvera tous les fichiers qui ont rpcsvc/sm_inter.h dedans (probablement pas des masses!). Ce genre de méthode de force brute peut être très utile.

ATTENTION à ne pas concaténer trop de fichier/blocs récuperés ensemble et à faire des recherches ou des opérations basées sur le texte (sort, grep, uniq, etc), parce que les utilitaires de texte se mélangent souvent les pédales (ou pire) quand ils rencontrent du binaire, qui est souvent dans l'output de lazarus.

MÉTHODE B

Utiliser un browser, c'est beaucoup plus joli, mais c'est pas vraiment fantastique quand tu cherches juste ce petit fichier que tu as perdu. Cependant, un browser peut être le bienvenu quand on cherche des fichiers intéressants en général... Pour lancer le browser, il y a juste à ouvrir le fichier HTML généré avec lazarus - il aura un nom comme unrm_output.frame.html si les données originales s'appelaient unrm_output.

Si ça a été fait correctement, vous verrez une grande carte de votre disque faite de lettres, et une frame HTML qui vous montre ce que toutes les lettres de la carte signifient. Vous pouvez utiliser la fonction de recherche interne au browser, ou juste passer à travers manuellement en cherchant ce qui vous intéresse. Cliquer sur un lien montrera les données dans ce fichier (à moins que ce ne soit des données unprintable).

Certaines données, comme le code C, sont dûres à distinguer pour lazarus, comme indiqué au-dessus. Par exemple, si vous avez une section de données qui ressemble à cela sur la carte :

....CccPpC..Hh....

Les trois premiers types de texte reconnus - C, P, C - peuvent tous être le même genre de texte (C). Trouver le numéro de bloc en passant sa souris au-dessus du lien et ensuite concaténer les fichiers ensemble, ou les examiner à la main, marche très bien.

Cette approche peut être très utile si tu as beaucoup de fichiers sur le disque. Parce que les systèmes de fichiers UNIX ont souvent un grand sens de localité qui est lié aux répertoires dans lesquels les fichiers étaient, tu peux utiliser le browser pour trouver la location d'une section du disque qui a l'air intéressante, et commencer la chasse avec le browser ou avec les utilitaires UNIX standards sur les blocs sauvegardés.

Comme tu peux voir, si tu as lu jusqu'ici, c'est très, *très* loin d'être un procédé automatique. Cependant, il est vraiment possible de récupérer des fichiers. Dans le futur, le processus deviendra peut-etre moins ardu, c'est-à-dire si les créateurs implémentent les utilitaires auxquels ils pensent (chercher à partir du browser, montrer les données même si on ne peut pas les imprimer, etc) ou si d'autres travaillent sur ce problème important.

BONNE CHANCE!
______________________

** less : emerge most, je l'aime bien... :)

[edit 1 : ajout d'accents et petites retouches, merci Blasserre!]
_________________
Votre moment detente
What is the nature of conflict?


Last edited by Trevoke on Tue Nov 15, 2005 2:51 pm; edited 1 time in total
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Tue Nov 15, 2005 10:34 am    Post subject: Reply with quote

Blocs non alloués pour blocks non allocated. Merci pour ce How-to!
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
TGL
Bodhisattva
Bodhisattva


Joined: 02 Jun 2002
Posts: 1978
Location: Rennes, France

PostPosted: Tue Nov 15, 2005 1:36 pm    Post subject: Reply with quote

Yep, grand merci Trevoke. Avec un peu de chance ça servira pas trop souvent, mais si ça arrive, cette doc sera vraiment précieuse.
Back to top
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1889
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Tue Nov 15, 2005 2:38 pm    Post subject: Reply with quote

/agree,

Et... Merci Trevoke (plus particulièrement pour l'effort de mise en page, on se comprend ;-) ) !
_________________
Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Back to top
View user's profile Send private message
Trevoke
Advocate
Advocate


Joined: 04 Sep 2004
Posts: 4099
Location: NY, NY

PostPosted: Tue Nov 15, 2005 2:52 pm    Post subject: Reply with quote

Mais de rien, voyons!
D'ailleurs, pouf, une edition aujourd'hui, ajout d'accents -- merci Blasserre! :)
_________________
Votre moment detente
What is the nature of conflict?
Back to top
View user's profile Send private message
blasserre
Veteran
Veteran


Joined: 10 Feb 2004
Posts: 1362
Location: Lille, Vlaanderen

PostPosted: Tue Nov 15, 2005 6:36 pm    Post subject: Reply with quote

you're welcome

dans la mesure où c'est moi qui ai fait remonter le post, fallait bien que je me fasse pardonner :wink:
_________________
benj

technicien professionnel, ascendant winner
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum