web-dev-qa-db-fra.com

Annuler une commande "rm -rf ~"?

J'avais un dossier que je ne voulais pas nommer '~', donc à partir de la ligne de commande, j'ai tapé

rm -rf ~

et supprimé accidentellement mon dossier personnel (depuis ~ résolu en/home/nom d'utilisateur). Y a-t-il un moyen de revenir ou dois-je fondamentalement recréer le compte à partir de zéro?

111
Chris

En général, il n'y a pas de retour facile.

Vous pouvez restaurer à partir de votre sauvegarde quotidienne.

147
RedGrittyBrick

D'autres (tels que @RiMMER , @Adam et @James T ) ont indiqué que, pour la plupart des systèmes de fichiers, il est possible de récupérer la plupart ou la totalité de vos données (éventuellement sans noms de fichiers). , car les données ne sont pas réellement mises à zéro, elles sont seulement supprimées de la table de fichiers. Ce n'est pas juste vrai sous Linux, il en va de même pour Windows et Mac.

Cependant, personne n'a mentionné la chose la plus importante - ÉTEIGNEZ VOTRE ORDINATEUR. À PRÉSENT. .

De nombreux programmes, y compris le navigateur Internet que vous utilisez actuellement, mettront en cache les données sur le disque dur. Pratiquement, tout ce que vous ferez peut entraîner le redimensionnement/l'écriture de votre ordinateur dans le fichier d'échange. Ces deux choses vont écrire sur des secteurs libres du disque dur, écrasant potentiellement vos précieuses données.

Ainsi, éteignez votre ordinateur, sortez le disque dur et installez-le sur un autre ordinateur. Montez le disque dur en lecture seule et récupérez les fichiers sur un disque dur séparé. Une fois que vous avez récupéré tout ce qui peut vous intéresser - et seulement alors - réécrivez les fichiers sur le lecteur d'origine.

Je crois que chaque utilisateur de Linux à un moment donné doit apprendre cette douloureuse leçon avant d’apprendre réellement l’importance des sauvegardes, ainsi que de porter une attention particulière aux détails et d’être prudent.

Par exemple, si vous supprimez des fichiers étranges, vous pouvez d’abord exécuter des commandes sur ce fichier, qui n’entraînent aucun effet secondaire et ne modifient pas vos données. Par exemple, aviez-vous couru

cd ~

avant d'essayer de supprimer le dossier, vous auriez vu qu'il changerait de répertoire dans votre dossier personnel, et non dans le dossier ~. Une fois que vous avez effectué suffisamment de procédures de dépannage pour connaître la vraie commande dont vous avez besoin pour cd correctement dans le dossier ~, vous pouvez appuyer sur la flèche vers le haut pour extraire la dernière commande de l'historique, puis changer cd en rm et then et alors seulement essayez de supprimer le dossier.

Je suggère de prendre des mesures comme celle-ci avant d'exécuter any une action permanente. Ce n'est pas permanent ou infaillible, mais vous avez une bien meilleure chance d'empêcher ces moments si vous prenez ce degré de prudence lorsque vous effectuez des actions ayant des effets secondaires.

13
jmort253

Si vous utilisez le système de fichiers ext3, alors ext3grep est votre nouveau meilleur ami. Un bon tutoriel (parmi beaucoup d’autres) sur l’utilisation d’ext3grep peut être trouvé ici .

7
Adam Prax

Vous pouvez essayer d’utiliser testdisk pour annuler la suppression des fichiers individuels . Apparemment, cela ne fonctionne que sur ext2 et NTFS (mais cela vaut la peine d'essayer).

Si vous avez ext3 ou ext4, vous pouvez récupérer fichier connu s en utilisant photorec , qui finira probablement par récupérer plus que vous le souhaitez. Photorec récupère les fichiers sans les informations de nom de fichier, ce qui peut être fastidieux de les parcourir.

5
James T

Si vous avez un disque externe suffisamment grand, vous avez une autre option, probablement la plus sûre. Vous aurez besoin de suffisamment d’espace pour stocker la totalité de la partition de départ, y compris l’espace libre.

Démarrez à partir d'un CD et ne montez pas du tout le lecteur d'origine. Montez le lecteur externe. dd la partition du lecteur d’accueil dans un fichier du lecteur externe. montez le fichier en tant que périphérique de bouclage et effectuez votre travail de suppression sur cette image, en sachant que vous ne pouvez pas endommager votre système de fichiers d'origine. En fonction du système de fichiers, il peut y avoir beaucoup de choses à essayer, certaines potentiellement destructives.

Cela m'a sauvé une fois avec une version bêta de Reiser4 quand je ne savais pas ce que cela ferait même si je le montais en lecture seule. J'ai lu quelque part au moment où le journal écrit était encore possible.

C'est aussi une bonne technique pour sauvegarder des données à partir d'un lecteur en voie de disparition.

4
barrymac

Je suis désolé pour vos données. Tous les autres intervenants ont expliqué comment traiter votre problème de données, mais voici quelques informations sur la manière de traiter la prochaine fois que vous verrez un dossier appelé ~.

  1. Trouvez celui qui l'a créé et assurez-vous qu'il ne le refera plus jamais.
  2. N'utilisez pas -rf ni aucun argument puissant pour rm pour effectuer la suppression. Au lieu de cela, prenez-le bien et lentement et assurez-vous de pouvoir voir ce qui se passe. Il est possible d'entrer le tilde sans qu'il soit étendu à votre répertoire personnel en l'échappant dans le shell. En théorie, vous pourriez rm -rI \~, mais vous pouvez aller encore plus loin.
    1. Tout d’abord, cd \~ pour obtenir DANS ce dossier, utilisez peut-être même pwd pour vérifier que vous y êtes bien. Dix enlèvent son contenu pendant que vous y êtes. Encore une fois, faites attention mais nettoyez le dossier avec rf -rI * et si vous avez besoin d’obtenir aussi .*.
    2. Maintenant, remontez avec cd .. et supprimez le répertoire avec rmdir \~.
2
Caleb

Il existe des techniques pour récupérer des fichiers en inspectant les inodes qui n'ont pas été recyclés. Plus vous écrivez de données dans le système de fichiers après la suppression, moins vous aurez de chances de récupérer vos données. La meilleure stratégie pour récupérer après une suppression accidentelle de données consiste à restaurer à partir d'une sauvegarde.

2
Xenoactive
alias rm="rm -i"

En supposant que vous utilisiez le shell Bash (placez-le dans votre fichier .bashrc pour qu'il persiste dans les nouveaux shells que vous ouvrez).

Cela devrait vous amener à vous demander de confirmer ce que vous voulez supprimer, ce qui est agréable surtout quand vous faites -rf, mais cela étendra aussi le '~' au chemin complet de votre répertoire personnel dans l'invite, ce qui devrait vous donner un indice que vous ne supprimez pas un fichier '~' mais bien votre répertoire personnel.

$ rm -rf ~
rm: examine files in directory /nas/users/u12345/unix (yes/no)? n

Ce n'est pas techniquement une réponse à votre question, mais pourrait vous aider à éviter un tel problème à l'avenir.

EDIT: Certaines personnes peuvent vous décourager d’utiliser cette technique car cela vous rend moins prudent avec la commande "rm". D'après mon expérience, c'est loin de la vérité. En réalité, l’alias a pour effet de vous dissuader d’utiliser "rm -rf" - comme vous le savez, vous obtiendrez de nombreuses invites auxquelles vous ne souhaitez pas répondre - et afin d’obtenir un no-Prompt "rm -rf "vous devez délibérément faire référence à la commande rm en tant que/bin/rm (ou autre). Cela conduit à une utilisation beaucoup plus consciente et délibérée de la commande "rm" en général - car vous devez toujours faire précéder l'utilisation de rm avec un choix mental de "rm ou/bin/rm" - sur votre serveur et sur les autres que vous rencontrez. être connecté à. Et un monde où tout le monde pensait avant d’utiliser rm serait effectivement plus sûr!

1
aaa90210

Je viens de cd. Snapshot et restaurer les fichiers. Mais, je le fais au travail et je ne sais pas du tout à quel point le répertoire .snapshot provient. Je pensais que c'était peut-être une fonctionnalité de Linux.

1
meBigGuy

Outils de récupération - Ligne de commande:

Outils de récupération - Interface graphique:

Infos:

Dans mon expérience personnelle, je récupère mes données en utilisant "UFS Explorer" et photorec

(1) = Pas de source ouverte, pas libre

(2) = Pas de source ouverte, libre

(3) = Open source et gratuit

(4) = avoir le support ntfs

(5) = avoir une structure de répertoire

0
intika