Comment j'ai (presque) foutu en l'air une demi-journée de boulot | Blog | Superflu Riteurnz | ptilouk.net studios
$ grep -a -C 2000 "global_objects\.add" /dev/sda2 | tee recovered_data
Oui, c'est juste grep. La magie de Gnunux : pas besoin d'installer un logiciel de récupération de données complexe et chiant à utiliser, c'est juste une bête commande disponible partout.
Explications :
grep, vous connaissez sans doute, ça va tout simplement chercher une chaîne de caractères dans un fichier, et vous la renvoyer avec plus ou moins de lignes de contexte ;
-a est une option qui signifie qu'on veut traiter les fichiers binaires « comme si » c'était des fichiers textes : normalement la commande ne marche que sur du texte, mais si vous voulez chercher une chaîne de caractère dans les octets qui composent une image JPG, libre à vous ;
-C 2000, « C » pour contexte : si la chaîne de caractères est trouvée, je veux que grep me renvoie les 2000 lignes qui « entourent » la ligne où la chaîne apparaît. Comme mon script faisait dans les 1000 lignes, j'ai tapé large. Vous pouvez aussi jouer avec -B (pour before) et -A (pour after) pour avoir un contexte non-symmétrique ;
"global_objects\.add" : une chaîne de caractères dont je me rappelais qu'elle était présente dans le script en question. Si vous avez perdu un texte, essayez de vous rappeler d'un titre ou d'une séquence de mots spécifique. Pour ma part, je me souvenais qu'à un moment, je remplissais un set nommé global_objects ;
/dev/sda2 : le truc magique, c'est que grep peut tourner sur une partition complète ! Ici, la partition qui correspond à un mon dossier perso ;
tee recovered_data : ça, c'est optionnel, mais ça permet, lorsque la chaîne est trouvée, à la fois de l'afficher et de la stocker dans le fichier recovered_data.
Pour faire simple : on demande à grep de scanner l'intégralité du disque dur (ou de la partition en question) comme si c'était un gros texte, et si jamais il trouve la chaîne global_objects\.add, de nous afficher les 2000 lignes de texte qui l'encadrent.
Alors bien sûr, ça prend un petit peu de temps, on parle d'un disque de 800 Gio… mais au bout d'une vingtaine de minutes… bingo, le script apparaît. Bon, il est entouré d'un petit merdier d'octets qui ne veulent rien dire (encore une fois, j'avais tapé large avec mes 2000 lignes de contexte),
Tue Feb 14 10:49:46 2023 - permalink -
-
https://studios.ptilouk.net/superflu-riteurnz/blog/2023-02-09_recovery.html