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"