Machen Sie den Linux-Papierkorb-Befehl rückgängig


24

Können wir Vorgänge in einem Terminal rückgängig machen, z. B. das Löschen von Dateien über rm?

Erhaltene Lösungen:

  1. Aliasing
  2. Wiederherstellen von Dienstprogrammen
  3. Sicherungsdienstprogramme
  4. LibTrash
  5. Versionierung (FUSE)

1
Ein rm: Die Verknüpfung einer Datei wird aufgehobeninode . Die Frage: "Wohin gehen Dateien, wenn der rmBefehl ausgegeben wird" -> unix.stackexchange.com/questions/10883/… ist möglicherweise auch eine gute Lektüre für Sie.
8.

Antworten:


62

Es gibt kein allgemeines "Rückgängigmachen" für jede Operation im Terminal. Wenn Sie eine Datei nach der Verwendung wiederherstellen möchten, rmmüssen Sie sich mit der Wiederherstellungssoftware befassen.

Eine Option, um zukünftige Fehler zu vermeiden, besteht darin, aliasalternative Befehle zum Entfernen von Dateien zu erstellen. Fügen Sie sie zu Ihren hinzu ~/.bashrcund gewöhnen Sie sich an, sie stattdessen zu verwenden rm.

  1. alias rmi = 'rm -i'

    Wenn Sie verwenden rmi, werden Sie zur Bestätigung zukünftiger Löschvorgänge aufgefordert. Vermeiden Sie es, yunmittelbar nach dem Ausgeben eines rmiBefehls die Angewohnheit des Drückens zu entwickeln , da dies den Zweck zunichte macht.

  2. Sie können auch Dateien, die mit dem trshBefehl im Terminal gelöscht wurden, in den Papierkorb verschieben (unter KDE und Gnome):

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

    Wenn Sie verwenden trsh, haben Sie eine eingeschränkte Funktion zum Wiederherstellen. Passen Sie das auf

    trsh dir1/file1 dir2/file1
    

    kann immer noch einen nicht behebbaren Datenverlust verursachen.


3
+1 für eine viel bessere Antwort als meine =)
The How-To Geek

9
Der zweite Alias ​​ist sehr, sehr klug. +1.
LiraNuna

3
trash () {mv $ @ ~ / .Trash; } # Bash-Funktion, kein Alias. Das erwartete Verhalten von rm zu ändern, ist meiner Meinung nach eine schlechte Idee.
Richard Hoskins

20
Das Risiko mit Aliasing rmzu rm -iist , dass Sie an dem Sicherheitsnetz gewöhnen, dass es Sie gibt. Dann gehen Sie auf eine andere Maschine, die diesen Alias ​​nicht hat ...
Dentrasi

3
Aus den Gründen, die Richard und Dentrasi erwähnen, ziehe ich es vor, eine benutzerdefinierte Funktion oder einen Alias ​​zu erstellen rmi-> rm -i. Es ist wirklich ein Fehler, einem bestehenden Programm einfach durch Aliasing im Wege zu stehen.
Telemachus

6

Es gibt keinen Papierkorb für die Befehlszeile.

Sie können einige der verschiedenen nicht gelöschten Hilfsprogramme ausprobieren, es gibt jedoch keine Garantie dafür, dass sie funktionieren.


Ja, es gibt einen Papierkorb für die Befehlszeile. Siehe trash-cli in einer anderen Antwort.
Sparhawk

Trash-cli ist so gut :) und benutzt Trashlib, besser als nur Dateien zu verschieben.
m3nda

5

Sie könnten trash-cli verwenden, wenn Sie KDE verwenden, wenn Sie eine GUI ausführen. Dies ist ein Befehlszeilenprogramm zum Löschen / Wiederherstellen mithilfe der KDE-Papierkorbfunktionen.


1
Trash-CLI unterstützt auch den GNOME-Papierkorb und wurde entwickelt, um die Kompatibilität von RM-Optionen (für das Aliasing) zu gewährleisten.
Andrea Francia

Vergessen Sie nicht, alias rm=trashdamit Ihre typischen Kommandozeilen-Fehler mit Rückgängig-Schaltflächen versehen sind.
Ryan C. Thompson

Ich denke, es alias rm=trashist potenziell gefährlich, wenn es eine Chance gibt, dass Sie eines Tages das System eines anderen verwenden und vergessen (oder ssh). Viele sicherer nur daran gewöhnen, das Schreiben trashstatt rm.
Sparhawk

4

Sie können rmeinen Alias ​​für den trashBefehl erstellen (Sie müssen ihn trashzuerst installieren .) Fügen Sie dies zu Ihrem hinzu ~/.bashrc:

alias rm='trash'

Dies ist vorzuziehen, alias rm='mv --target-directory=$HOME/.Trash'da ~ / .Trash NICHT der Mülleimer für Gnome ist. Es ist meiner Meinung nach besser, trashherauszufinden, wo sich der eigentliche Papierkorb befindet.

Übrigens hätte ich das in einem Kommentar gepostet, aber ich habe nicht genug Repräsentanten.


5
+1 für "da ~ / .Trash NICHT der Mülleimer für Gnome ist." Rm sollte jedoch auch nicht in den Papierkorb verschoben werden. Sie sollten statt rm einfach den Papierkorb verwenden, wenn Sie dies möchten.
Nagul

Es stimmt, aber für manche Menschen sterben alte Gewohnheiten schwer.
Alvin Row

'rmtrash' ist eine weitere Option.
Itachi

3

Zwei weitere technische Lösungen wurden noch nicht genannt:

  1. libtrash : Eine dynamische Bibliothek, die in Ihrer Shell vorgeladen werden kann und die das Löschen / Entfernen von Systemaufrufen abfängt und die Dateien stattdessen in einen Papierkorb verschiebt (ähnlich einem Alias, funktioniert aber bei vorgeladener Anwendung für jede Anwendung).
  2. Ein Versionierungsdateisystem. Wenn Sie eine Datei löschen (oder bearbeiten, kopieren oder ...), können Sie einfach zu einem alten Zustand zurückkehren. Dies kann mit einem FUSE- Dateisystem und einem seiner Versionsverwaltungsdateisysteme erfolgen .

3

Es gibt hier eine größere Frage, die es wert ist, angesprochen zu werden. Shell-Befehle sind nicht gesprächig (sie überprüfen nicht doppelt, was Sie wollen), und sie erwarten, dass Sie wissen, was Sie tun. Dies ist von grundlegender Bedeutung für ihre Gestaltung . Es ist ein Feature, kein Bug.

Einige Leute fühlen sich macho, wenn sie solche Befehle verwenden, was ich ziemlich dumm finde, aber es ist wichtig, die Gefahren zu verstehen. Sie können in einem Terminal eine Menge Schaden anrichten, selbst wenn Sie nicht root sind. Ich denke, Sie haben sich wahrscheinlich wirklich nur darum gekümmert rm, aber da Sie gesagt haben: "Können wir die im Terminal durchgeführten Vorgänge rückgängig machen?" Die allgemeine Antwort lautet: Nein, das können Sie nicht.


2

Option 1: Siehe Wiederherstellen von Linux-Dateien von einem ext2-Dateisystem . Diese Seite verweist auf ein Programm von Sebastian Hetze von LunetIX, das (wie der Titel schon sagt) kürzlich gelöschte Dateien aus einem ext2-Dateisystem wiederherstellt. Anwendungsbeispiel:

# undelete -d /dev/hdc3 -a 10

Warnungen:

  • Die ursprüngliche Website ist weg. Der obige Link führt zum Internetarchiv.
  • Die Seiten sind in einer Mischung aus Englisch und Deutsch.
  • Wie bereits erwähnt, wurde das Tool speziell für das ext2-Dateisystem entwickelt. Es ist unwahrscheinlich, dass es mit einem anderen Dateisystemtyp funktioniert. insbesondere nicht diejenigen , die nicht ext N .

Option 2: Auf meinem Computer wird rsnapshot (rsync) ausgeführt, wodurch stündlich Snapshots meiner ausgewählten Ordner erstellt werden. Dies geschieht schrittweise jede Stunde, 2 Stunden oder was auch immer Sie CRON anweisen. Nach einem vollen Tag werden diese Schnappschüsse in einen täglichen Schnappschuss umgewandelt und nach 7 Tagen in einer Woche so weiter und so fort. Dadurch kann ich für jede Stunde ungefähr einen Monat in die Vergangenheit reisen! Es ist ziemlich gut mit Speicherplatz, da es symbolische Verknüpfungen zu Dateien erstellt, die sich nie geändert haben ...


Nur um zu verdeutlichen, ist # 1 spezifisch für ext2-Dateisysteme. Auf einem ext3-Dateisystem würde es nicht funktionieren.
Nagul


1

Es gibt nicht gelöschte Dienstprogramme für ext2, aber die meisten anderen Linux-Dateisysteme sind in der Steinzeit hängengeblieben und haben keine erweiterten Usability-Funktionen. Ein trauriger Zustand, wenn man bedenkt, dass gigantische Laufwerke genug Speicherplatz haben, um eine Datei nie wieder zu löschen, ist an der Tagesordnung.

Sie haben also drei Möglichkeiten:

  1. Machen Sie regelmäßig Backups, zum Beispiel mit einem Befehl wie:

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

  2. Verwenden Sie ein Tool gitzur Versionskontrolle, z. B. für Ihre gesamte Arbeit. Während dies keinen Schutz gegen einen Verrückten rm -rbietet, der das Repository tötet, schützt es vor regelmäßigen Problemen, da Sie git rmnicht roh verwenden rm.

  3. Seien Sie besonders vorsichtig und nicht zu viel Vertrauen in rm -i, trash-cliund Freunde, da die meisten Daten werden Sie auf der Schale verlieren Sie nicht verlieren durch zufällige rm, sondern durch falsch adressierte Rohre, vertippte Ausgabedateien, fehlgeleitet mvund so, also Dinge , die überschreibt Ihre Daten, nicht nur löschen.

Führen Sie alle drei Schritte aus, um maximale Sicherheit zu gewährleisten.


Es ist ziemlich witzig, ext2 modern zu nennen. Die neueren Dateisysteme verwenden kompliziertere Festplattenformate als ext2 / 3 und mussten auf leicht zu findende Speicherorte verzichten, an denen Sie möglicherweise Dateien zum Löschen finden. Sie sind für Leute gedacht, die Backups von Dingen anfertigen, die ihnen wichtig sind. Übrigens benutze ich immer mv und cp -i, da ich normalerweise nichts kaputt machen möchte. Normalerweise gebe ich \ rm ein, weil ich auch einen Alias ​​von rm -i habe, aber ich möchte seine Frage nicht beantworten.
Peter Cordes

0

check this ... könnte hilfreich sein http://artmees.github.io/rm/

Angenommen, Sie haben es getan

rm very_important_file

vom terminal. Das Wiederherstellen dieser Datei ist ein langwieriger und nicht immer erfolgreicher Vorgang

Stattdessen, wenn Sie das oben erwähnte Skript verwendet haben. Sie müssen sich darum keine Sorgen machen, weil

rm very_important_file
mv very_important_file ~/.Trash/

sind gleichwertig. Das Skript behandelt mehr Fälle und ändert Ihr System überhaupt nicht. Dies rmliegt daran, dass es im lokalen Bin-Ordner des Benutzers abgelegt wird, so dass es das System-RM schattiert und es dennoch nicht beeinflusst oder deaktiviert

Dies ist ein verfeinerter Aliasing-Ansatz, bei dem jedoch keine Funktion verloren geht


1
Es wäre gut, wenn Sie eine Erklärung hinzufügen könnten, was dies tut und wie es auf die Frage zutrifft, vielleicht ein Beispiel usw.
slhck


0

Für mich (opensuse leap 42.2, NTFS pendrive) hat PhotoRec - auch von den testdiskErstellern - funktioniert :) Es wurden jedoch keine Dateinamen wiederhergestellt.

PhotoRec ist eine Software zur Datenwiederherstellung, mit der verlorene Dateien, einschließlich Videos, Dokumente und Archive, von Festplatten, CD-ROMs und verlorenen Bildern (daher der Name Photo Recovery) aus dem Speicher der Digitalkamera wiederhergestellt werden können. PhotoRec ignoriert das Dateisystem und sucht nach den zugrunde liegenden Daten, sodass es auch dann funktioniert, wenn das Dateisystem Ihres Mediums stark beschädigt oder neu formatiert wurde.

Ich habe es mit Standard-Repositorys in openSUSE installiert

Anweisung


1
Willkommen bei Super User! Bitte lesen Sie Wie Sie Software empfehlen, um die erforderlichen Mindestinformationen und Vorschläge zu erhalten, wie Sie Software für Superuser empfehlen können. Damit Ihre Antwort auch dann nützlich bleibt, wenn der / die bereitgestellte (n) Link (s) nicht mehr funktionieren, sollten diese Details in Ihre Antwort übernommen werden.
Ich sage "Reinstate Monica
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.