Damned [code]
rm -Rf *[/code]malencontreux et irrécupérable (récupérer est un autres souci). Que faire? Bien sûr tout dépend du répertoire sous lequel ça a été fait. Tout ce qui suit est fait sous root, la c…ie ayant déjà été faite, pas la peine de prendre des précautions tardives. Commencez par aller prendre un remontant et un café et rappelez vous qu’une grosse bourde devient une catastrophe à cause de ce qu’on a fait dans les 5-10 minutes qui ont suivies la bourde. Vous pouvez aussi aller sur Pause Café et trouver un troll et une tête de turc sur laquelle vous allez pouvoir vous défouler, Anthropo s’est révélé parfait pour moi dans ce rôle , qu’il en soit remercié.
-
Sous /: là c’est foutu, il ne reste rien. Si vous êtes adepte de Bernadette, allez à Lourdes, il vous restera Lisieux pour pleurer car ça ne marchera pas
-
Sous /tmp, /var/tmp, /var/run ça ne devrait pas être grave, recréer le répertoire si il a disparu (attention au mode 1777 pour /tmp ET /var/tmp) et redémarrer.
-
Sous /boot, vous avez juste perdu votre noyau donc ne reboutez pas (réfléchissez si vous ne voyez pas pourquoi). Réinstallez tranquillement votre noyau ET grub ou lilo. Pour grub, il faut tout réinstaller, pour lilo, c’est (comme souvent ) plus simple, un petit «lilo» après la réinstallation du noyau suffit.
-
Sous /usr, ça n’est pas trop grave, il suffit de faire une réinstallation de tous les paquets, or -joie, bonheur- la liste des paquets est récupérable. Il est même possible de ce contenter de réconstruire la branche /usr en décompressant manuellement les paquets dans un coin avec dpkg-deb et de recopier le /usr, ça évitera une reconfiguration de tous les paquets (innocente a priori mais on ne sait jamais). Cela peut même se faire directement sur la machine et via un CD-Live ou USB-live en récupérant préalablement un binaire dpkg-deb et en se souvenant que les paquets sont souvent dans /var/cache/apt/archives (damned vous avez fait «apt-get clean» avant!! Tant pis pour vous!). Il est donc une bonne idée d’avoir ce binaire dans un coin genre sous /root.
Donc, le plus simple, la liste des paquets se récupère par
# export LST=$(grep -B 1 "Status: install ok installed" /var/lib/dpkg/status | grep Package | sed -e '1,$s/Package: *//')
si on a tous les paquets dans /var/cache/apt/archives, ça deviet plus simple: Il faut tout d’abord retrouver la commande ar, celle ci est dans /usr MAIS il y a busybox, faites donc sous /bin
# ln -s busybox ar
Vous avec désormais ar de disponible
Créez un repertoire /tempo puis faites
Là vous avez un répertoire usr convenable, vous le déplacez sous / et vous avez récupéré votre répertoire /usr.
Dans le cas où vous n’avez pas tous les paquets, il suffit de se procurer les paquets apt, gnupg, dpkg et peut être gpgv puis de faire la manoeauvre avec ces paquets. Ensuite un
[code]# apt-get install -d $(grep -B 1 “Status: install ok installed” /var/lib/dpkg/status | grep Package | sed -e ‘1,$s/Package: *//’)
[/code]
permet de récupérer les autres paquets et de continuer la manoeuvre.
Les cas recensés à partir d’ici correspondent au cas où vous êtes mal, la machine s’est figé ou ne marche pas bien, ce qui suit se fait donc à partir d’un live CD ou d’une live-USB (vous connaissez clefagreg:?)
- Sous /bin, /lib c’est plus ennuyeux, vous avez bouffé tous les binaires, la machine ne va pas démarrer et ne continue plus. Cependant ça n’est pas la cata quand même. Vous avez la liste des paquets installés en faisant
ls *.list | sed -e '1,$s/.list//'
dans le répertoire
Il vous suffit donc de récuperer l’arborescence correspondante en décompressant les paquets correspondants via dpkg-deb: Si les paquets sont dans un répertoire /paquets vous faites
Sous /tmp, vous avez les répertoire lib, bin, … recopiez celui que vous avez effacé. A priori, votre machine est réparée.
Les cas recensés à partir d’ici correspondent au cas où vous êtes vraiment mal:
- Sous /etc, ah… là, ça me parait foutu, vous avez paumé toute votre configuration, vous êtes comme si vous deviez réinstaller votre machine (une bonne idée est donc de conserver ce répertoire dans un coin, il est petit souvent). À noter que
$ dpkg --get-selections > /root/paquets_installes
vous permet d’avoir les paquets installés. Je suggère donc
- soit la récupération d’un /etc d’une machine équivalente, à ce moment là
grep "^/etc" *.list | sed -e '1,$s/^.*://' | sort -u
sur la machine abimée permet de connaître les fichiers sous /etc installés par les paquets (sauf ceux constitués). Pensez que des fichiers n’y figure pas: ceux que vous avez ajoutés ou qui ont été crées avec des scripts (/etc/modules, /etc/resolv.conf, /etc/fstab, /etc/hosts, /etc/hostname, …).
- Soit une réinstallation en utilisant la liste des paquets installés.
- Sous /var (fut mon cas). Au début on se dit, pas si grave, puis l’étendue des dégats apparait: la base de dpkg, la base d’apt, la base d’aptitude ont disparues. De plus, les données de tous les services ont sautées (votre site, votre base mysql, vos logs, …). Allez pleurer un coup ou taper sur Anthropo sur Pause Café puis revenez. Vous pouvez récupérer des choses:
- La liste des paquets peut se retrouver à l’aide de /usr/share/doc: Un répertoire -> Un paquet du même nom. La correspondance n’est pas tout à fait exacte mais suffit.
- Recopiez le répertoire /etc ailleurs
Personnellement, j’ai fait comme suit: - Installation d’un debootstrap dans un répertoire /tmp/lenny
- Récopie de l’arborescence obtenue sur le disque
- Recopie des sauvegardes des sites, mysql et de etc
- Réinstallation de tous les paquets
(2 heures)
Il faut penser à plusieurs choses: - Un debootstrap directement sur le disque ne fonctionne pas, debootstrap veut un répertoire vide au démarrage, une réinstallation par dessus peut être efficace, je n’ai pas essayé.
- Les fichiers /etc/hosts, /etc/resolv.conf, /etc/network/interfaces, /etc/hostname, /etc/fstab, /etc/modules (?), /etc/crontab, /etc/passwd,shadow,gshadow et group sont démolis. Il faut également réinstallé console-setup.
- Il faut penser à reconfigurer l’heure (tzdata).
(Question: la simple recopie du /var du debootstrap et la réinstallation des paquets aurait-elle suffit? À mon avis oui)
[À PEAUFINER]