it-swarm.com.de

Haben wir ein Rückgängigmachen unter Linux?

Ich habe einige Dateien in einem Batch-Skript umbenannt. Gibt es eine Möglichkeit, die Änderungen rückgängig zu machen, ohne sie wieder umbenennen zu müssen?

Bietet Linux eine native Methode zum undoing?

55
Lazer

Linux bietet (wie andere Unices) nativ keine Rückgängig-Funktion. Die Philosophie ist, dass wenn es weg ist, es weg ist. Wenn es wichtig war, sollte es gesichert worden sein.

Es gibt ein Fuse-Dateisystem, das automatisch Kopien alter Versionen speichert: copyfs , verfügbar in allen guten Distributionen. Das kann natürlich viele Ressourcen verbrauchen.

Der beste Schutz vor solchen Unfällen ist die Verwendung eines Versionskontrollsystems (cvs, Bazaar, darcs, git, Mercurial, Subversion, ...). Das Lernen dauert ein wenig, aber es zahlt sich mittel- und langfristig hervorragend aus.

Unglücklicherweise nicht.

17
postfuturist

Nein, in Unix gibt es kein magisches Rückgängigmachen. Unix geht davon aus, dass Sie wissen, was Sie tun. Verwenden Sie für die Rückgängig-Unterstützung ein VCS (in Ihrem Texteditor ist es wahrscheinlich auch integriert).

Die meisten Dateisysteme sind nicht in der Lage, dies transparent zu tun.

Zeitmaschinen- und Systemwiederherstellung auf Mac bzw. Windows sind nur Sicherungs-/Änderungssteuerungssysteme.

10
xenoterracide

In der Befehlszeile gibt es kein Rückgängigmachen. Sie können jedoch Befehle wie rm -i Und mv -i Ausführen. Dies wird Sie mit einem "Sind Sie sicher?" Frage, bevor sie den Befehl ausführen.

Es ist auch möglich, einem Startskript einen Alias ​​dafür hinzuzufügen (z. B. ~/.bashrc Oder /etc/bash.bashrc):

alias remove='rm -i'
alias move='mv -i'

Bearbeiten: Durch die folgenden Vorschläge habe ich meinen Rat entfernt, die Standardbefehle zu aliasen. Stattdessen werden jetzt neue Befehle eingeführt.

8
vdboor

Der Grund dafür, dass Linux/Unix-Systeme nicht wiederhergestellt werden, liegt in der Art und Weise, wie die meisten Dateisysteme ihre Informationen speichern. Datei-Metainformationen werden alle auf der Vorderseite der Festplatte mit Verweisen auf Inodes auf der restlichen Festplatte gespeichert. Normalerweise weisen die meisten Dateisysteme einer Datei in diesem Metabereich 10 Blöcke zu. Die ersten 7 beziehen sich auf die ersten 7 Inodes. Der 8. und 9. gehen zu Listen von Inodes (doppelt verknüpfte Blöcke) und der 10. geht zu einer Liste von Listen von Listen (dreifach verknüpfte Blöcke). Dies variiert von Dateisystem zu Dateisystem (ext4, jfs, xfs usw.), aber diese Blocklisten können normalerweise Dateigrößen von 2 GB bis zu mehreren TB adressieren.

Da all diese Informationen beim Löschen einer Datei auf der Vorderseite der Festplatte gespeichert sind, gibt es keine Möglichkeit, Inodes auf der Festplatte auf die Metadaten zu verweisen, zu denen sie gehören. Im Gegensatz dazu speichern FAT32 und NTFS tatsächlich einige Header-Informationen mit den Dateien selbst, wodurch es einfacher wird, zu identifizieren, zu welcher Datei eine Gruppe von Blöcken gehört (solange dieser Speicherplatz noch nicht von neueren Dateien zurückgefordert wurde). Wenn Sie in der Linux-Arbeit etwas löschen, ist es fast immer das erste, was aus Effizienzgründen sofort von neuen Daten überschrieben wird.

4
djsumdog

Eine Sache, die ich meiner .bashrc hinzufügen möchte, ist eine Kopier- und Entfernungsfunktion. Etwas wie:

cprm(){
    cp -p $1 ~/deleted/$1
    rm $1
}

Aber Sie müssen sich angewöhnen, cprm nicht rm einzugeben.

Natürlich müssen Sie den gelöschten Bereich im Auge behalten, wenn Sie nur über begrenzten Speicherplatz verfügen.

2
Deano

Wenn Sie wirklich eine Rückgängig-Funktion wünschen, verwenden Sie die Quellcodeverwaltung. Subversion funktioniert tatsächlich sehr gut auf einem Einzelbenutzer-Computer. Ich verwende es, um alle meine persönlichen Dateien auf meinem Heimsystem zu steuern. Es scheint wie ein Overkill, bis eine Katastrophe, ein Schurkenskript oder ein Tippfehler in der Befehlszeile eintritt.

2

GitFS ist ein Fuse-basiertes Dateisystem, das automatisch diffs zwischen Versionen berechnet und das Wiederherstellen/Durchsuchen dieser Versionen ermöglicht.

Webseite: https://www.presslabs.com/gitfs

Dokumente: https://www.presslabs.com/gitfs/docs/usage/

1
test30