GNU/Linux >> Tutoriels Linux >  >> Linux

[Linux] :Comment empêcher l'exécution accidentelle de la commande "rm -rf"

En tant qu'êtres humains, nous devrions accepter que des erreurs telles que :rm -rf * arriverait ! En disant "Mieux vaut prévenir que guérir", nous suivrons les meilleures pratiques lors de l'exécution de ces commandes critiques. Ici, nous allons vous montrer comment éviter de telles suppressions accidentelles sur vos machines Linux. Néanmoins, si vous avez supprimé des fichiers et que vous souhaitez les récupérer, suivez : comment vous pouvez récupérer des données supprimées !

1. N'utilisez jamais rm -rf ./* (recommandé)

En pratique, au lieu de ./ au début d'un chemin, utilisez simplement *. Les barres obliques n'ajoutent vraiment aucune valeur à la commande et ne causeront que de la confusion. La commande ci-dessus peut être mieux réécrite comme :

rm -rf *

2. Utilisez "–preserve-root" comme option pour rm (recommandé)

La commande rm inclut une option "-preserve-root" pour empêcher la suppression accidentelle du répertoire racine, mais ce comportement n'est pas la valeur par défaut sur les anciennes machines. Ajoutez donc simplement ce qui suit à /etc/bashrc et /etc/profile à partir de maintenant :

alias rm=”rm -–preserve-root”

Remarque :Si vous souhaitez toujours supprimer /, vous pouvez utiliser l'attribut –no-preserve-root

3. Si vous souhaitez empêcher toute suppression de répertoire important ? (Recommandé)

Créez un fichier nommé -i dans ce répertoire et pour ce faire, suivez la commande ci-dessous :

touch -- -i or touch ./-i

Essayez maintenant 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

La commande ci-dessus se traduit par :rm -rf -i *, où -i consiste à supprimer les fichiers de manière interactive. Il demande donc à chaque suppression de fichier !

4. Utilisez safe-rm (recommandé)

Safe-rm est un outil de sécurité destiné à empêcher la suppression accidentelle de fichiers importants en remplaçant /bin/rm par un wrapper, qui vérifie les arguments donnés par rapport à une liste noire configurable de fichiers et de répertoires qui ne doivent jamais être supprimés.

Les utilisateurs qui tentent de supprimer l'un de ces fichiers ou répertoires protégés ne pourront pas le faire et verront à la place un message d'avertissement :

#rm -rf /etc
Skipping /etc

5. Comme dans Windows, vous pouvez créer un répertoire de corbeille et déplacer tous les fichiers supprimés vers le répertoire de corbeille. (Non recommandé)

Ce n'est pas une bonne pratique, car vous continuez à supprimer, ces fichiers/dossiers s'accumulent toujours dans le répertoire de la corbeille et vous devez également passer du temps à les supprimer. Encore si vous souhaitez le faire, le voici :Créez un fichier del.sh avec le contenu suivant sous /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

créez un alias pour rm dans votre /etc/bashrc ou /etc/profile

alias rm="/usr/local/bin/del.sh"

6. Créez un script bash pour vous avertir lorsque vous exécutez la commande rm ? (Recommandé)

Créez un fichier del.sh avec le contenu suivant sous /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

créez un alias pour rm dans votre /etc/bashrc ou /etc/profile

alias rm="/usr/local/bin/del.sh"

Linux
  1. [Linux] :Comment exclure un répertoire lors de l'utilisation de la commande shell "tar"

  2. Comment quitter si une commande a échoué ?

  3. Comment puis-je empêcher ou interrompre un copier/coller accidentel dans le terminal ?

  4. Empêcher l'utilisateur de saisir un espace accidentel entre rm et le caractère générique

  5. Comment sérialiser l'exécution des commandes sous Linux ?

Comment utiliser la commande Linux SS

Comment supprimer un répertoire sous Linux

Comment utiliser la commande Linux nohup

Comment suivre l'exécution d'un programme à l'aide de la commande Linux Strace

Comment utiliser la commande PS

Comment utiliser la commande TOP