Le lien que quelqu'un a fourni dans les commentaires est probablement votre meilleure chance.
Hack de débogage Linux :restaurer des fichiers
Cet article, bien qu'il semble un peu intimidant, est en fait assez simple à suivre. En général, les étapes sont les suivantes :
-
Utilisez debugfs pour afficher un journal des systèmes de fichiers
$ debugfs -w /dev/mapper/wks01-root
-
À l'invite de débogage
debugfs: lsdel
-
Exemple de sortie
Inode Owner Mode Size Blocks Time deleted 23601299 0 120777 3 1/ 1 Tue Mar 13 16:17:30 2012 7536655 0 120777 3 1/ 1 Tue May 1 06:21:22 2012 2 deleted inodes found.
-
Exécutez la commande dans debugfs
debugfs: logdump -i <7536655>
-
Déterminer l'inode des fichiers
... ... .... output truncated Fast_link_dest: bin Blocks: (0+1): 7235938 FS block 7536642 logged at sequence 38402086, journal block 26711 (inode block for inode 7536655): Inode: 7536655 Type: symlink Mode: 0777 Flags: 0x0 Generation: 3532221116 User: 0 Group: 0 Size: 3 File ACL: 0 Directory ACL: 0 Links: 0 Blockcount: 0 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x4f9fc732 -- Tue May 1 06:21:22 2012 atime: 0x4f9fc730 -- Tue May 1 06:21:20 2012 mtime: 0x4f9fc72f -- Tue May 1 06:21:19 2012 dtime: 0x4f9fc732 -- Tue May 1 06:21:22 2012 Fast_link_dest: bin Blocks: (0+1): 7235938 No magic number at block 28053: end of journal.
-
Avec les informations d'inode ci-dessus, exécutez les commandes suivantes
# dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938 # file recovered.file.001 file: ASCII text, with very long lines
Les fichiers ont été récupérés dans recovered.file.001
.
Autres options
Si ce qui précède n'est pas pour vous, j'ai utilisé des outils tels que photorec
pour récupérer des fichiers dans le passé, mais il est conçu uniquement pour les fichiers image. J'ai beaucoup écrit sur cette méthode sur mon blog dans cet article intitulé :
Comment récupérer des fichiers jpeg et mov corrompus à partir de la carte SDD d'un appareil photo numérique sur Fedora/CentOS/RHEL.
Avec un peu de chance, je peux parfois récupérer des fichiers supprimés avec ce script ou la solution suivante dans la réponse :
#!/bin/bash
if [[ ! $1 ]]; then
echo -e "Usage:\n\n\t$0 'file name'"
exit 1
fi
f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')
if [[ $f ]]; then
echo "fd $f found..."
cp -v "$f" "$1"
else
echo >&2 "No fd found..."
exit 2
fi
Il existe une autre astuce utile :si vous connaissez un modèle dans vos fichiers supprimés, tapez alt +sys +résultat pour reboot+remount en lecture seule, puis avec un live-cd, utilisez grep
pour chercher dans le disque dur :
grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
puis éditez /tmp/recover
pour ne conserver que ce qui était votre/vos fichier(s) avant.
Hé, si avec la philosophie unix tout est fichiers, il est temps d'en profiter, non ?
Ce qui a fonctionné pour moi a été donné par arch (s'applique uniquement aux fichiers texte):
grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
où /dev/sdXN
est la partition contenant le fichier perdu (vérifier avec mount
en cas de doute).
Cela prend un peu de temps, mais a fonctionné lorsque j'ai accidentellement supprimé du code source que je n'avais pas encore validé !