Annuler une commande «rm -rf ~»?

115

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?

Chris
la source
18
Quel système de fichiers?
Tarnay Kálmán
6
Clairement, vous n’avez aucun sens de l’humour.
Blomkvist
21
Bien que cela ne réponde pas directement à votre question, les rm -rf "~"guillemets rechercheront ce nom littéral au lieu de le développer. Mais j’aurais peur de l’utiliser quand même - j’utiliserais quelque chose comme, lsou d’ cdabord, pour vérifier que je reçois le bon répertoire ou supprimer le dossier d’un gestionnaire de fichiers GUI. Peut-être tout d'abord renommer le dir ( mv "~" tilde), vérifier et ensuite supprimer.
Henrik N
2
Pour l'avenir, n'utilisez pas rm de manière interactive sur la ligne de commande. Utilisez un utilitaire tel que corbeille et vous 1) ne pourrez plus faire la même erreur et 2) ne vous habituerez pas à un alias de shell médiocre qui vous causera des problèmes.
Fred Nurk
9
@HenrikN: ./~ au lieu de "~" fait la même chose, mais fonctionne également avec d'autres noms de fichiers problématiques, comme ceux qui commencent par des tirets et ressemblent à des options.
Fred Nurk

Réponses:

148

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

Vous pouvez restaurer à partir de votre sauvegarde quotidienne.

RedGrittyBrick
la source
194
Votre remarque sur les sauvegardes est cruelle et à 100%.
Benjamin Bannier
3
OS X définit la barre de la façon dont les sauvegardes doivent travailler ( en particulier avec Time Capsule). Voir maketecheasier.com/… pour des suggestions sur la manière d'obtenir un peu la même chose avec Ubuntu.
Thorbjørn Ravn Andersen -
4
@ Thorbjørn Ravn Andersen - C'est le cas, sauf en cas de dépression nerveuse de Time Machine. La machine à voyager dans le temps a eu un freak-out sur moi deux fois en six mois.
Faux nom
La sauvegarde hors site est excellente et peut être assez abordable. J'utilise Backblaze (Mac / Windows) à 5 $ / ordinateur / mois. Beaucoup de gens semblent aimer Crashplan (Mac / Windows / Linux).
Henrik N
23
tous les jours quoi ????
Luc M
66

D'autres (tels que @RiMMER , @Adam et @James T ) ont mentionné 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 (peut-être sans noms de fichiers), car les données ne sont pas mises à zéro, elles sont simplement 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. MAINTENANT. .

De nombreux programmes, y compris le navigateur Internet que vous utilisez actuellement, mettront les données en cache 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 insérez-le dans 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.

BlueRaja - Danny Pflughoeft
la source
11
Même le processus d'arrêt peut écrire sur le disque dur. Je hésite à recommander immédiatement débrancher votre ordinateur, car cela peut certainement faire des choses bien pires, mais ... eh bien, en fonction de l'importance des données est, vous pouvez considérer.
BlueRaja - Danny Pflughoeft
1
En fonction du lecteur / du système d'exploitation / du point de montage, il peut être possible de démonter et / ou de remonter immédiatement en lecture seule sans éteindre l'ordinateur, puis de l'éteindre, etc.
Matthew Scharley,
1
killall rmau lieu d'éteindre.
Fred Nurk
1
En fonction de la taille de votre répertoire personnel et de celui de votre disque dur, les chances de réécrire les secteurs libres contenant vos données sont plutôt minces.
Mike Speed
Vous pouvez récupérer des fichiers texte en utilisant cette méthode sans trop de difficulté (du moment que vous avez une idée approximative de ce qu’ils contiennent), mais les fichiers binaires sont si difficiles qu’ils sont pratiquement impossibles.
Satanicpuppy
13

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 sur ce fichier des commandes qui ne comportent 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 en votre dossier personnel, et non en ~dossier. Une fois que vous avez effectué suffisamment de procédures de dépannage pour connaître la vraie commande dont vous avez besoin correctement cddans le ~dossier, vous pouvez appuyer sur la flèche vers le haut pour extraire la dernière commande de l'historique, puis basculer cdvers rm, puis, et seulement ensuite, essayer de supprimer le dossier. .

Je suggère de prendre des mesures comme celle-ci avant d'effectuer toute action qui est 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.

jmort253
la source
4
Regardez avant de sauter et lsdevant vous rm.
LawrenceC
7

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

Adam Prax
la source
6

Vous pouvez essayer d'utiliser testdisk pour récupérer 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 des fichiers connus en utilisant photorec , ce qui finira probablement par récupérer plus que vous ne le souhaitez. Photorec récupère les fichiers sans les informations de nom de fichier, ce qui peut être fastidieux de les parcourir.

James T
la source
4

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 original. 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 lorsque 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.

barrymac
la source
1
+1 pour mentionner que sur la plupart des systèmes de journalisation journalisés, même un montage en lecture seule peut écrire des données dans le cadre des activités du journal.
Sleske
2

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 de données accidentelle est de restaurer à partir d'une sauvegarde.

Xenoactive
la source
2
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 bien, surtout lorsque vous faites -rf, mais cela étendra également 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 elle 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 voudriez pas répondre - et afin d’obtenir un non-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ù chacun penserait avant d’utiliser rm serait un monde plus sûr!

aaa90210
la source
2
Cela dépend du système sur lequel vous êtes. Sous RHEL5 et OS X 10.6 au moins, -fl’ -ioption est prioritaire .
Daniel Beck
Je ne le savais pas. J'ajoute mon conseil avec YMMV et "n'essayez pas cela à la maison, ni plus probablement encore au travail"!
aaa90210
9
Si vous faites cela, vous aurez un jour pas cet alias en place - peut-être que vous êtes assis devant un autre ordinateur ou que vous avez ssh'd dans quelque part - et vous utiliserez la machine à sous étant habituée au filet de sécurité. Vous ferez quelque chose que vous regretterez.
Fred Nurk
1
@FredNurk Exactement. Le mieux est d’ajouter le -i vous-même ou de ne pas utiliser l’option -f.
Arda Xi
Quand j'ai beaucoup de fichiers à supprimer, je commence par rm -i my_list_of_files. Puis j'utilise CTRL-C et rappelle ma commande pour la modifier enrm -rvf my_list_of_files
Luc M
2

Je suis désolé pour vos données. Tous les autres intervenants ont indiqué comment résoudre votre problème de données, mais voici quelques informations sur la manière de traiter la prochaine fois qu'un dossier est appelé ~.

  1. Trouvez celui qui l'a créé et assurez-vous qu'il ne le refera plus jamais.
  2. N'utilisez pas d' -rfarguments puissants ou abusifs pour que vous puissiez supprimer. Au lieu de cela, prenez-le lentement et soyez sûr 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 \~ , cependant, vous pouvez aller plus loin.
    1. Premièrement, cd \~pour entrer dans ce dossier, utilisez peut-être même pwdpour vérifier que vous y êtes arrivé. Dix enlèvent son contenu pendant que vous y êtes. Encore une fois soyez prudent, 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 \~.
Caleb
la source
1

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.

meGigGuy
la source
1

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

Outils de récupération - Gui:

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

intika
la source
-3

rm est pour toujours.

Bien que cela ne vous aide pas maintenant, vous pouvez à l'avenir ne pas utiliser rm ou, pour vous forcer vraiment, ajouter un script trouvé précédemment dans votre chemin nommé rm qui déplace les fichiers dans une corbeille que vous nettoyez une autre fois vous faites des erreurs et ne soyez pas SOL).

Corey
la source
7
Le seul problème avec ceci est que vous pouvez devenir un peu rapide et lâche avec la commande rm et oublier que vous n’avez pas la fonctionnalité simple de suppression de la suppression sur le serveur Linux de votre société ... oups ...
jmort253,
2
-1 Ceci a le même problème que les réponses trop votées (donc je vais voler le commentaire de quelqu'un d'autre): un jour, ce script n'est pas en place - peut-être que vous êtes assis devant un autre ordinateur ou que vous avez ssh'd quelque part - et vous utiliserez la machine habituée au filet de sécurité et vous ferez quelque chose que vous regretterez.
DMA57361
@Corey Bien que je sois d'accord sur le fait que cela pourrait causer un mauvais habbit, +1 parce que cette réponse a été trop fortement votée
John Militer