Als Menschen sollten wir Fehler wie:rm -rf * akzeptieren würde passieren ! Gemäß dem Motto „Vorbeugen ist besser als heilen“ werden wir bei der Ausführung solcher kritischen Befehle bewährte Verfahren befolgen. Hier zeigen wir Ihnen, wie Sie solche versehentlichen Löschungen auf Ihren Linux-Rechnern vermeiden können. Wenn Sie dennoch Dateien gelöscht haben und diese wiederherstellen möchten, gehen Sie wie folgt vor: So können Sie gelöschte Daten abrufen !
1. Verwenden Sie niemals rm -rf ./* (empfohlen)
Verwenden Sie zur Übung anstelle von ./ am Anfang eines Pfads einfach *. Die Schrägstriche fügen dem Befehl wirklich keinen Wert hinzu und stiften nur Verwirrung. Der obige Befehl kann besser umgeschrieben werden als :
rm -rf *
2. Verwenden Sie „–preserve-root“ als Option für rm (empfohlen)
Der Befehl rm enthält eine Option „–preserve-root“, um das versehentliche Löschen des Stammverzeichnisses zu verhindern, aber dieses Verhalten ist nicht die Standardeinstellung bei älteren Computern. Fügen Sie also von nun an einfach Folgendes zu /etc/bashrc und /etc/profile hinzu:
alias rm=”rm -–preserve-root”
Hinweis:Wenn Sie dennoch / löschen möchten, können Sie –no-preserve-root attribute
verwenden3. Möchten Sie verhindern, dass wichtige Verzeichnisse gelöscht werden? (Empfohlen)
Erstellen Sie eine Datei namens -i in diesem Verzeichnis und folgen Sie dazu dem folgenden Befehl:
touch -- -i or touch ./-i
Versuchen Sie jetzt rm -rf *:
Mon Oct 21>$pwd /tmp/demo Mon Oct 21>$touch {1..4} Mon Oct 21>$touch -- -i Mon Oct 21>$ls 1 2 3 4 -i Mon Oct 21>$rm -rf * rm: remove regular empty file `1'? y rm: remove regular empty file `2'? y rm: remove regular empty file `3'? y rm: remove regular empty file `4'? y
Der obige Befehl übersetzt sich selbst zu:rm -rf -i *, wobei -i Dateien interaktiv löschen soll. Es fordert also bei jeder Dateilöschung auf!
4. Verwenden Sie safe-rm (empfohlen)
Safe-rm ist ein Sicherheitstool, das das versehentliche Löschen wichtiger Dateien verhindern soll, indem /bin/rm durch einen Wrapper ersetzt wird, der die angegebenen Argumente gegen eine konfigurierbare schwarze Liste von Dateien und Verzeichnissen prüft, die niemals entfernt werden sollten.
Benutzer, die versuchen, eine dieser geschützten Dateien oder Verzeichnisse zu löschen, können dies nicht tun und erhalten stattdessen eine Warnmeldung:
#rm -rf /etc Skipping /etc
5. Wie in Windows können Sie ein Papierkorbverzeichnis erstellen und alle gelöschten Dateien in das Papierkorbverzeichnis verschieben. (Nicht empfohlen)
Dies ist keine gute Vorgehensweise, da sich diese Dateien/Ordner beim ständigen Löschen immer noch im Papierkorbverzeichnis ansammeln und Sie auch Zeit damit verbringen müssen, diese zu löschen. Wenn Sie es dennoch tun möchten, hier ist es:Erstellen Sie eine Datei del.sh mit folgendem Inhalt unter /usr/local/bin/.
#!/bin/bash DIRECTORY="$HOME/.Trash"; if [ ! -d $DIRECTORY ] ; then echo "Directory $DIRECTORY doesn't exist"; echo "Creating the .Trash directory....."; mkdir $DIRECTORY; fi mv "$@" $HOME/.Trash
Erstellen Sie einen Alias für rm in Ihrer /etc/bashrc oder /etc/profile
alias rm="/usr/local/bin/del.sh"
6. Erstellen Sie ein Bash-Skript, das Sie warnt, wenn Sie den Befehl rm ausführen ? (Empfohlen)
Erstellen Sie eine Datei del.sh mit folgendem Inhalt unter /usr/local/bin/.
#!/bin/bash # Copyright (c) 13th Aug 2014 Focus4Infotech # All Rights Reserved # Function of this script is to avoid unknowing deletion # of files, which is hard to recover. This script # doesn't backup, instead it just warns and upon user # confirmation, it removes the files. # Authors : Focus4infotech.com echo " __ ___ _ ___ ___ _ _ _ ___ ___ _ _ ___ ___ "; echo "| \ |___ | |___ | | |\ | | __ |___ | | |___ [__ "; echo "|__/ |___ |___ |___ | | | \| |__] | | |___ |___ ___] ...."; echo " __ ___ ___ __ ___ ___ ___ _ _ _ "; echo " |__] |___ | |__| |__/ |___ |___ | | | "; echo " |__] |___ |___ | | | \ |___ | |__| |___ "; echo " ___ __ _ _ ___ _ _ _ _ _ ___ _ _ _ _ "; echo " | | | |\ | | | |\ | | | |___ \_/ / |\ | "; echo " |___ |__| | \| | | | \| |__| |___ | / | \| "; read -p "" choice case "$choice" in y|Y ) rm "$@";; n|N ) echo "Exiting without any change.....";exit 0;; * ) echo "Exiting without any change......";exit 0;; esac
Erstellen Sie einen Alias für rm in Ihrer /etc/bashrc oder /etc/profile
alias rm="/usr/local/bin/del.sh"