Forum général.général récupérer un fichier supprimé

Posté par .
Tags : aucun
4
1
nov.
2011

Bonjour, alors que je regardais une vidéo avec mplayer, j'ai supprimer le fichier vidéo, y a t'il un moyen de récupérer le fichier sachant que je n'ai pas quitté mplayer ?

Peut être en trouvant l'inode du fichier puis en créant une entrée dans un répertoire ?
Je suis sous debian sid à jour et le système de fichier est ext3.

  • # petite recherche

    Posté par . Évalué à 10.

    qui m'a donné ça qui correspond exactement à ton problème
    http://stackoverflow.com/questions/1178593/link-to-a-specific-inode

    • [^] # Re: petite recherche

      Posté par . Évalué à 4.

      Ça marche effectivement impeccablement :

      Copy from /proc/pid/fd/file descriptor

      Use lsof to find the pid and the file descriptor.

      Mais c'est dommage qu'on ne puisse pas faire un « ln » dur à la place, du fait des partitions distinctes. À dire vrai, je suis très surpris que ça marche puisque l'entrée de /proc/*/fd est en fait un lien symbolique qui pointe le nom du fichier supprimé !

      Il y a donc du code spécial dans cette partie du code de /proc qui fait que l'on ouvre quand même le fichier ouvert par le processus et c'est très bien comme ça, mais ça vaut quand même le coup d'être mis en évidence.

      • [^] # Re: petite recherche

        Posté par . Évalué à 2.

        Comme expliqué dans les commentaires, ce n'est pas un vrai lien symbolique (d'ailleurs, pour un fichier supprimé le nom pointé se termine par " (deleted)"), et pour tout autre accès il se comporte comme un fichier normal (ce qui est le principe d'un lien symbolique, on ne remarque que c'est un lien symbolique que si l'on se demande si c'en est un).

        Concernant ln, c'est parce que l'appel système correspondant (link(2)) prend en paramètre des chemins (l'ancien et le nouveau), d'ailleurs, les inodes à la unix n'existent pas dans tous les systèmes de fichiers (c'est pour abstraire ce genre de détail qu'il y a l'arborescence des fichiers).

  • # si fermé

    Posté par . Évalué à 3.

    Pour référence, quand le fichier est fermé, il y a d'autres solutions.

    Pour des fichiers texte, on peut faire "strings /dev/$PARTITION | grep $UNECHAINEDANSLEFICHIER" (et jouer avec grep -C) pour retrouver le contenu sur le disque.
    Pour une vidéo, utiliser les outils comme ext3rminator (http://glandium.org/blog/?p=184) ou peut-être photorec (plus bourrin).

    Aussi, si $BROWSER plante en plein milieu de l'édition d'un long message sur linuxfr ou un webmail, on peut chercher dans la RAM avec : "strings /proc/kcore | grep $UNECHAINE" (de préférence copier le fichier sur le disque car la moindre action risque d'effacer des bouts)

  • # Merci pour vos réponses

    Posté par . Évalué à 4.

    Merci pour vos réponses, j'ai dû abandonner mes recherches trop tôt pensant le problème plus compliqué que ça.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.