Annuler la commande de corbeille Linux

24

Pouvons-nous annuler des opérations effectuées dans un terminal, par exemple la suppression de fichiers rm?

Solutions obtenues:

  1. Aliasing
  2. Restaurer les utilitaires
  3. Utilitaires de sauvegarde
  4. LibTrash
  5. Versioning (FUSE)
cdb
la source
1
On rm: Il dissocie un fichier de celui-ci inode. La question: "Où vont les fichiers lorsque la rmcommande est exécutée " -> unix.stackexchange.com/questions/10883/… pourrait également être une bonne lecture pour vous.
erch

Réponses:

62

Il n'y a pas d'annulation générale pour chaque opération dans le terminal. Si vous souhaitez récupérer un fichier après utilisation, rmvous devrez consulter le logiciel de récupération.

Une option pour vous éviter de futures erreurs est de créer aliasdes commandes alternatives pour supprimer les fichiers. Ajoutez-les à votre ~/.bashrcet prenez l'habitude de les utiliser à la place de rm.

  1. alias rmi = 'rm -i'

    Si vous utilisez rmi, vous serez invité à confirmer les suppressions futures. Essayez d'éviter de développer l'habitude d'appuyer yimmédiatement après avoir émis une rmicommande, car cela irait à l'encontre du but.

  2. Vous pouvez également déplacer les fichiers supprimés par la trshcommande dans le terminal vers votre corbeille (sur KDE et Gnome):

    alias trsh='mv --target-directory="$HOME/.Trash"'
    

    Si vous utilisez trsh, vous aurez une capacité "d'annulation de suppression" limitée. Attention à ça

    trsh dir1/file1 dir2/file1
    

    peut toujours entraîner une perte de données irrécupérable.

John T
la source
3
+1 pour une bien meilleure réponse que la mienne =)
The How-To Geek
9
le deuxième alias est très, très intelligent. +1.
LiraNuna
3
trash () {mv $ @ ~ / .Trash; } # fonction bash, pas un alias. Changer le comportement attendu de rm est une mauvaise idée, à mon humble avis.
Richard Hoskins
20
Le risque avec aliasing rmpour rm -ique vous vous habituez au filet de sécurité qu'il vous donne. Ensuite, vous passez sur une autre machine, qui n'a pas cet alias ...
Dentrasi
3
Pour les raisons que Richard et Dentrasi mentionnent, je préfère créer une fonction personnalisée ou un alias rmi-> rm -i. C'est vraiment une erreur de simplement entraver un programme existant en le replaçant sur lui.
Télémaque
6

Il n'y a pas de corbeille pour la ligne de commande.

Vous pouvez essayer certains des divers utilitaires de suppression, mais rien ne garantit qu'ils fonctionneraient.

The How-To Geek
la source
Oui, il y a une corbeille pour la ligne de commande. Voir trash-cli dans une autre réponse.
Sparhawk
Trash-cli est tellement bon :) et utilise Trashlib, mieux que de simplement déplacer des fichiers.
m3nda
5

Vous pouvez utiliser trash-cli si vous utilisez KDE lorsque vous exécutez une interface graphique. Il s'agit d'un utilitaire de ligne de commande pour supprimer / restaurer à l'aide des fonctions de corbeille de KDE.

Joe
la source
1
trash-cli fournit également fonctionne avec la corbeille GNOME et il est conçu pour fournir la compatibilité des options rm (pour l'aliasing).
Andrea Francia
N'oubliez pas de faire en alias rm=trashsorte que vos erreurs de ligne de commande typiques soient dotées de boutons d'annulation.
Ryan C. Thompson,
Je pense que alias rm=trashc'est potentiellement dangereux, s'il y a une chance que vous utilisiez le système de quelqu'un d'autre un jour et oubliez (ou ssh). Beaucoup plus sûr de simplement s'habituer à écrire trashau lieu de rm.
Sparhawk
4

Vous pouvez créer rmun alias pour la trashcommande (vous devrez d' trashabord l' installer .) Ajoutez ceci à votre ~/.bashrc:

alias rm='trash'

C'est préférable alias rm='mv --target-directory=$HOME/.Trash'car ~ / .Trash n'est PAS le dossier de la corbeille pour gnome. Il est préférable à mon humble avis de trashsavoir où se trouve le dossier de la corbeille.

btw j'aurais posté ceci dans un commentaire mais je n'ai pas assez de représentant.

Alvin Row
la source
5
+1 pour "puisque ~ / .Trash n'est PAS le dossier de la corbeille pour gnome." Cependant, rm ne doit pas non plus être aliasé dans la corbeille. Vous devez simplement utiliser la corbeille au lieu de rm si c'est ce que vous voulez.
nagul
C'est vrai, mais pour certaines personnes, les vieilles habitudes ont la vie dure.
Alvin Row
'rmtrash' est une autre option.
Itachi
3

Deux autres solutions techniques n'ont pas encore été nommées:

  1. libtrash : une bibliothèque dynamique qui peut être préchargée dans votre shell qui intercepte la suppression / suppression des appels système et déplace les fichiers vers un dossier de corbeille à la place (un peu comme un alias mais fonctionne pour n'importe quelle application une fois préchargée).
  2. Un système de fichiers de version. Si vous supprimez (ou modifiez, ou copiez, ou ...) un fichier, vous pouvez simplement revenir à un ancien état. Cela pourrait être fait avec un système de fichiers FUSE et l'un de ses systèmes de fichiers de version .
joschi
la source
3

Il y a ici une question plus vaste qui mérite d'être abordée. Les commandes shell ne sont pas bavardes (elles ne vérifient pas ce que vous voulez) et elles s'attendent à ce que vous sachiez ce que vous faites. Ceci est fondamental pour la façon dont ils sont conçus . C'est une fonctionnalité, pas un bug.

Certaines personnes se sentent macho lorsqu'elles utilisent de telles commandes, ce qui est assez idiot à mon avis, mais il est important de comprendre les dangers. Vous pouvez faire beaucoup de dégâts dans un terminal, même si vous n'êtes pas root. Je pense que vous vous en souciez probablement rm, mais comme vous avez dit "Pouvons-nous annuler les opérations effectuées dans le terminal", j'ai pensé que cela valait la peine d'être dit. La réponse générale est non, vous ne pouvez pas.

Télémaque
la source
2

Option 1: voir Annuler la suppression de fichiers Linux à partir d'un système de fichiers ext2 . Cette page pointe vers un programme, écrit par Sebastian Hetze de la société LunetIX, qui (comme le titre le suggère) rétablit les fichiers récemment supprimés d'un système de fichiers ext2. Exemple d'utilisation:

# undelete -d /dev/hdc3 -a 10

Avertissements:

  • Le site Web d'origine a disparu. Le lien ci-dessus est vers les archives Internet.
  • Les sites sont dans un mélange d'anglais et d'allemand.
  • Comme indiqué ci-dessus, l'outil est conçu spécifiquement pour le système de fichiers ext2. Il est peu probable qu'il fonctionne sur un autre type de système de fichiers; surtout pas les autres que poste N .

Option 2: J'ai rsnapshot (rsync) en cours d'exécution sur ma machine qui crée des instantanés toutes les heures de mes dossiers sélectionnés. Il le fait progressivement toutes les heures, toutes les 2 heures ou tout ce que vous demandez à CRON de faire. Après une journée complète, il recycle ces instantanés en un instantané quotidien et après 7 jours dans une semaine, etc. Cela me permet de remonter le temps pendant environ un mois environ pour chaque heure! Il est assez bon avec l'espace disque car il crée des liens symboliques vers des fichiers qui n'ont jamais changé ...

Fosse
la source
Juste pour clarifier, # 1 est spécifique aux systèmes de fichiers ext2. Cela ne fonctionnerait pas sur un système de fichiers ext3.
nagul
1

Il existe des utilitaires non supprimés pour ext2, mais la plupart des autres systèmes de fichiers Linux sont bloqués à l'âge de pierre et n'ont pas de fonctionnalités d'utilisation avancées. Triste situation, considérant des disques gigantesques avec suffisamment d'espace pour ne plus jamais supprimer un fichier sont monnaie courante.

Vous êtes donc coincé avec trois options:

  1. Effectuez des sauvegardes régulièrement, par exemple avec une commande comme:

    rsync -axvRP --backup --backupdir=/backup/incr/$(date -I) /home/ /backup/root/

  2. Utilisez un outil de contrôle de version tel que gitpour tout votre travail. Bien que cela ne protège pas contre un fou rm -rqui tue le référentiel, il protège contre les problèmes réguliers car vous n'utiliserez git rmpas brut rm.

  3. Soyez très prudent et ne font pas confiance trop rm -i, trash-cliet les amis, comme la plupart des données vous perdrez du shell que vous ne perdrez pas par hasard rm, mais par des tuyaux mal acheminés, les fichiers de sortie fautes d' orthographe, mal acheminés mvet d'autres choses, par exemple, des choses qui écrasera vos données, pas seulement les supprimer.

Faites les trois pour une sécurité maximale.

Grumbel
la source
C'est assez hilarant d'appeler ext2 moderne. Les systèmes de fichiers plus récents utilisent des formats sur disque plus compliqués que ext2 / 3 et ont dû abandonner des emplacements faciles à trouver où vous pourriez trouver des fichiers à supprimer. Ils sont conçus pour les personnes qui effectuent des sauvegardes de leurs objets. BTW, j'utilise toujours mv et cp -i, car je ne veux normalement rien encombrer. Je tape normalement \ rm, car j'ai aussi rm alias rm -i, mais je ne veux pas répondre à sa question.
Peter Cordes
0

vérifiez ceci ... pourrait être utile http://artmees.github.io/rm/

supposez que vous l'avez fait

rm very_important_file

du terminal. récupérer ce fichier est un processus fastidieux et pas toujours réussi

à la place, si vous avez utilisé le script mentionné. vous n'avez pas à vous en préoccuper car

rm very_important_file
mv very_important_file ~/.Trash/

sont équivalents. le script gère plus de cas et ne modifie pas du tout votre système rmet c'est parce qu'il est placé dans le dossier bin local de l'utilisateur afin qu'il masque le rm du système et ne l'affecte pas ou ne le désactive pas

c'est une approche de repliement raffinée mais sans perdre aucune fonctionnalité

a14m
la source
1
Ce serait bien si vous pouviez ajouter des explications sur ce que cela fait et comment cela s'applique à la question, peut-être ajouter un exemple, etc.
slhck
0

TestDisk peut restaurer les fichiers des systèmes de fichiers FAT, exFAT, NTFS et ext2 .

Cristian Ciupitu
la source
0

Pour moi (opensuse leap 42.2, NTFS pendrive) PhotoRec - également par les testdiskcréateurs - a fonctionné :) Cependant, il n'a pas récupéré les noms de fichiers.

PhotoRec est un logiciel de récupération de données de fichiers conçu pour récupérer des fichiers perdus, y compris des vidéos, des documents et des archives à partir de disques durs, de CD-ROM et d'images perdues (donc le nom de récupération de photos) de la mémoire de l'appareil photo numérique. PhotoRec ignore le système de fichiers et va après les données sous-jacentes, il fonctionnera donc même si le système de fichiers de votre support a été gravement endommagé ou reformaté.

Je l'ai installé à l'aide de référentiels standard dans openSUSE

instruction

boczniak767
la source
1
Bienvenue sur Super User! Veuillez lire Comment recommander un logiciel pour obtenir les informations et suggestions minimales requises sur la façon de recommander un logiciel sur Super User. Pour que votre réponse reste utile même si le (s) lien (s) fourni (s) rompt, ces détails doivent être modifiés dans votre réponse.
Je dis Réintégrer Monica