Restaurer des fichiers ext3 après un "rm -rf"

Il y a les bons administrateurs systèmes et les mauvais administrateurs ; les bons administrateurs :

  • remplacent rm par mv ;
  • n’utilisent pas de caractères joker et surtout pas l’étoile (aka *) ;
  • savent qu’ils sont faillibles ; ont déjà failli ;
  • s’arrêtent 20 secondes avant de lancer une commande, même non dangereuse ;
  • utilisent toujours les commandes pwd et hostname pour vérifier le répertoire courant et le nom du serveur
  • pensent au pire scénario; ils vérifient qu’ils ont des sauvegardes ou des snapshots;
  • ouvrent un editeur texte avant le faire un « Coller »
  • demandent confirmation à un tier ou à eux-mêmes et à haute voix avant de lancer une opération
  • font un rebond avec SSH que s’ils sont obligés et nomment/colorient leur fenêtre de terminal en conséquence

Mais à la fin, bons et mauvais administrateurs système utilisent la commande « rm » sur Linux. Et c’est mal, c’est très mal, c’est très très mal…

Je ne suis pas administrateur système. Mais comme, après tout, l’erreur est humaine, se préparer à ses propres erreurs n’est pas forcément une mauvaise idée. Disons que vous venez de supprimer le mauvais fichier, 2 possibilités :

Un programme garde le(s) fichier(s) ouvert(s)

Tout est parfois question de réflexes. Sur ext3, les fichiers sont effectivement supprimés quand tous les « file handlers » sont libérés. Le mauvais réflexe consiste donc à arrêter vos programmes (ou le serveur) juste après avoir lancé la suppression d’un ou plusieurs fichiers. Dans le cas des datafiles Oracle, par exemple, il « suffit » de passer votre instance en mode hotbackup et retrouver les fichiers dans /proc/[dbwr pid]/fd pour les copier à chaud puis faire des recover. Pour plus de détail, voici 2 articles intéressants :

Si vos fichiers ne sont pas utilisés

La situation est bien moins barrée ; il faut agir vite ! La première chose à faire dans ce cas est de démonter le système de fichiers (umount -f) puis d’aller lire ces articles sur le web à propos de ext3grep sur le référentiel de Google Code et sur le site de l’auteur du programme. Si vous arrêtez votre ordinateur, ne le redémarrez pas avant d’avoir bien réfléchi. Il faut à tout prix éviter de remonter le système de fichiers qui contenait vos fichiers supprimés.

1 réflexion sur “Restaurer des fichiers ext3 après un "rm -rf"”

  1. Hello,

    Un des trucs que j’utilise c’est d’utiliser le plus possible des paths relatifs et la complétion. Cela limite la porté d’une erreur.

    Exemple :
    rm -rf /oracle/toto

    cd /oracle
    rm -rf toto

    Car un simble « blanc » peut etre fatal :
    rm -rf / oracle/toto
    au lieu de rm -rf /oracle/toto … plus qu’a sortir les tapes. 🙂

    Si c’est obligatoire d’utiliser un path absolu, alors je prends effectivement quelques secondes avant de valider la commande.
    Encore plus si c’est une commande récursive.

    Attention aussi avec les « > » qui peuvent se révéler assez dramatique.

    Exemple :
    ./truc.sh >truc.sh
    au lieu de :
    ./truc.sh >truc.sh.log

    Dommage de perdre le beau script et les heures de dev associées.

    Cordialement.

Les commentaires sont fermés.