web-dev-qa-db-fra.com

Puis-je récupérer un fichier supprimé?

J'ai supprimé par erreur un fichier via ma connexion SSH. Comment puis-je récupérer ce fichier ou, si Ubuntu a quelque chose comme une corbeille?

7
Hari Krishna

rm versus suppression de l'interface graphique

Si vous avez utilisé la commande rm, vous avez effectivement supprimé le fichier. Les données ne sont plus accessibles à partir du système de fichiers - sauf qu'il y avait un autre lien physique vers le fichier (inhabituel) ou que vous avez supprimé un lien symbolique.

Les données réelles sont peut-être encore sur le disque, sur les blocs de disque, le système de fichiers est supposé être inutilisé. Si vous voulez le récupérer, vous ne devriez pas écrire sur le disque, car il pourrait réutiliser l’espace disque contenant vos données. Vous pouvez essayer une récupération de données régulière sur le fichier avec les outils adaptés au système de fichiers que vous avez utilisé.

Pour le système de fichiers ext4 par défaut, voir: Existe-t-il un logiciel de récupération disponible pour ext4? et la plupart des réponses à la question liée ci-dessous.

Corbeille pour la CLI

Il est possible d'utiliser la corbeille à partir de la ligne de commande, mais ce n'est pas configuré par défaut. Le package trash-cli contient des outils de ligne de commande permettant d’utiliser la corbeille de votre environnement de bureau.

Il existe des commandes telles que trash-put, trash-list etc;
Les noms sont assez longs - vous pouvez définir des alias de shell comme

alias tp='trash-put'

ou

alias del='trash-put'

puis utilisez del au lieu de rm pour supprimer des fichiers ou des répertoires de manière plus sûre.

Comme il est proposé dans la réponse ci-dessous, il est possible d'utiliser le nom d'alias rm, en remplaçant la commande rm par trash-put, mais il existe de nombreuses raisons de ne pas le faire; Certains d'entre eux sont:

  • L'implémentation de trash-put est beaucoup moins bien testée que rm de 'GNU coreutils' dans Ubuntu, par exemple.
  • Les options de la valeur par défaut rm ne sont pas toutes prises en charge par trash-put
  • Quelqu'un d'autre utilisera tôt ou tard le shell avec l'alias et verra techniquement une commande rm très cassée.
  • Une syntaxe spéciale est nécessaire lorsque le réel rm est requis
  • Généralement, ce n'est pas une bonne idée de jouer avec un outil très dangereux, au moins de risquer la confusion.

Cela dit, voir réponse de @enzotib sur Les fichiers/répertoires supprimés avec rm peuvent-ils être restaurés? sur la manière de configurer l'alias.

13
Volker Siegel

Il existe un cas particulier dans lequel vous pouvez récupérer un fichier supprimé: il est encore ouvert dans certains programmes. Vous devez juste savoir quel programme l'utilise.

J'ai enregistré cette réponse de Patrick sous Unix et Linux Stack Exchange, mais pas un lien vers l'original.

Récupérer un fichier supprimé si le fichier est toujours ouvert dans un programme.

Si le fichier est toujours ouvert, vous pouvez le récupérer en allant à/proc/PID/fd, où PID est le pid d'un programme dont le fichier est toujours ouvert. Ce répertoire contient tous les descripteurs de fichiers ouverts du programme et vous pouvez y accéder comme des fichiers normaux. Vous pouvez donc copier le fichier hors de/proc. - Patrick 18 déc à 04h44 et - camh 19 déc à 7h12 - Unix et Linux stackexchange

3
Joe