Ist die Datei wiederherstellbar?
Kurze Antwort: In der Regel nicht.
@ Mark Plotnick weist in den Kommentaren darauf hin, dass Sie .py
Dateien .pyc
mit Uncompyle wiederherstellen können . Dies sollte perfekt für Ihre Situation sein.
Im Allgemeinen ist dies jedoch viel schwieriger. Theoretisch können Sie mit Forensik-Tools Dateien wiederherstellen. Wahrscheinlich ist die einfachste, die ich verwendet habe testdisk
(auch bekannt als "PhotoRec"). Es funktioniert nur manchmal und es ist ein langsamer Prozess. Es ist normalerweise nicht wert, also ist es möglich , aber die wirkliche Antwort ist "nein".
Kann > geändert werden, um ausführbare Dateien nicht zu überschreiben?
Nein. Es gibt keine Standardmethode, mit der die Shell angewiesen wird, niemals nur Dateien umzuleiten, die als ausführbar gekennzeichnet sind. Es gibt "noclobber", das verhindert, dass in vorhandene Dateien umgeleitet wird, die ausführbar sind oder nicht, aber meine Kommentare dazu finden Sie weiter unten.
Was ist in Zukunft zu tun?
Das mag albern klingen, aber um zukünftige Fehler zu vermeiden, müssen Sie wahrscheinlich nichts tun. Ich wette, Sie haben diese Lektion bereits gelernt.
Ich benutze und unterrichte Unix schon sehr lange und obwohl die Leute diesen Fehler oft machen, wiederholen sie ihn selten. Warum nicht? Wahrscheinlich aus demselben Grund schneidet sich eine Person, die mit Messern zu tun hat, nicht selbst: Menschen können gut lernen. Irgendwann wird es zur zweiten Natur, das Richtige zu tun.
Verwenden Sie einen Texteditor, der Backups für Sie erstellt. Wenn Sie beispielsweise verwenden emacs
, wird die vorherige Version Ihres Programms in mac_ip.py ~ gespeichert. Andere Editoren können so konfiguriert werden, dass sie ähnlich funktionieren (z. B. "set backup" in .nanorc
). Für Editoren, die keine automatischen Sicherungen unterstützen, können Sie in Ihrer .bashrc-Datei eine vereinfachende Funktion ausführen:
myeditor() { cp -p "$1" "$1~"; editor "$1"; }
Machen Sie es sich einfach, Kopien zu erstellen. Im Verzeichnis des Projekts, an dem Sie arbeiten, befindet sich beispielsweise möglicherweise ein Makefile mit einem Ziel wie dem folgenden:
# Use `make tar` to backup all files in this directory.
# Tar filename will be ../<currentdirectory>-<date>.tar.gz
DIRNAME = $(shell basename `pwd`)
TIMESTAMP = $(shell date +%s)
tar:
@echo "[Tarring up ${DIRNAME}.tar.gz]"
(cd .. ; tar -zcvf "${DIRNAME}-${TIMESTAMP}.tar.gz" "${DIRNAME}")
(Hinweis: stackexchange gibt die obigen Tabulatoren als 4 Leerzeichen falsch wieder.)
Ebenso können Sie ein Makefile-Ziel erstellen, das rsync
einen entfernten Unix-Host ansteuert, auf den Sie ssh
Zugriff haben . (Verwenden ssh-copy-id
Sie diese Option, damit Sie nicht wiederholt nach Ihrem Passwort gefragt werden.)
Verwenden Sie git
. Es gibt viele hervorragende Tutorials zum Einstieg. Versuchen Sie man gittutorial
, man gittutorial-2
und man giteveryday
. Ein eigenes Git-Repository einzurichten ist nicht schwer, aber Sie können auch kostenlos ein Remote-Repository auf github.com erstellen
Wenn die oben genannten Lösungen zu schwer sind, können Sie kleine Skripte auf gist.github.com speichern . Es ist zwar möglich, Inhalte aus einem Webbrowser einzufügen oder hochzuladen, ich empfehle jedoch, eine Befehlszeilenschnittstelle zu verwenden , um die Dinge supereinfach zu machen.
Ich rate dringend davon ab, "noclobber" zu verwenden.
Ja, wenn Sie dies wünschen, erhalten Sie set -o noclobber
Fehlermeldungen, wenn Sie versuchen, eine vorhandene Datei zu überschreiben. Das ist meiner Meinung nach eine schlechte Idee. *
Dadurch funktioniert die Shell nicht standardgemäß, und es wird nicht angezeigt, ob sie aktiviert ist. Sie müssen eine andere Syntax verwenden, um normale Dinge zu tun. Am schlimmsten ist, dass Sie eines Tages eine andere Unix-Maschine ohne Noclobber verwenden, wenn Sie sich an Noclobber gewöhnen.
Wie Sie wahrscheinlich wissen, wurde die Unix-Shell als scharfes Werkzeug für Experten konzipiert. Es ist schnell zu bedienen und steht Ihnen nicht im Weg - und es schneidet Sie, wenn Sie vergessen, welches Ende spitz ist. Aber je öfter Sie es benutzen, desto mehr werden Sie es zu schätzen wissen, dass dies eine gute Sache sein kann.
* Fußnote: Nimm meine Meinung vielleicht mit einem Körnchen Salz. Ich bin auch die Art von Person, die Fahrrad-Stützräder für eine schlechte Idee hält.
set -o noglobber
Bash nicht mehr in vorhandene Dateien umgeleitet wird. Weitere Informationen finden Sie hier: cyberciti.biz/tips/howto-keep-file-safe-from-overwriting.html