GNU/Linux >> Tutoriales Linux >  >> Linux

[Linux]:Cómo evitar la ejecución accidental del comando “rm -rf”

Como humanos, debemos aceptar errores como:rm -rf * podría pasar ! Al decir "Más vale prevenir que curar", seguiremos las mejores prácticas durante la ejecución de tales comandos críticos. Aquí le mostraremos cómo evitar tales eliminaciones accidentales en sus máquinas Linux. Aún así, si ha eliminado archivos y desea recuperarlos, siga:¡cómo puede recuperar los datos eliminados!

1. Nunca use rm -rf ./* (Recomendado)

Como cuestión de práctica, en lugar de ./ al comienzo de una ruta, simplemente use *. Las barras realmente no agregan valor al comando y solo causarán confusión. El comando anterior se puede reescribir mejor como:

rm -rf *

2. Use “–preserve-root” como una opción para rm (Recomendado)

El comando rm incluye una opción “–preserve-root” para evitar la eliminación accidental del directorio raíz, pero ese comportamiento no es el predeterminado en las máquinas más antiguas. Simplemente agregue lo siguiente a /etc/bashrc y /etc/profile a partir de ahora:

alias rm=”rm -–preserve-root”

Nota:si aún desea eliminar / puede usar el atributo –no-preserve-root

3. Si desea evitar la eliminación de un directorio importante? (Recomendado)

Cree un archivo llamado -i en ese directorio y para hacerlo siga el siguiente comando:

touch -- -i or touch ./-i

Ahora intente 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

El comando anterior se traduce en:rm -rf -i *, donde -i es para eliminar archivos de forma interactiva. ¡Así que solicita cada eliminación de archivo!

4. Use safe-rm (recomendado)

Safe-rm es una herramienta de seguridad destinada a evitar la eliminación accidental de archivos importantes al reemplazar /bin/rm con un envoltorio, que compara los argumentos proporcionados con una lista negra configurable de archivos y directorios que nunca deben eliminarse.

Los usuarios que intenten eliminar uno de estos archivos o directorios protegidos no podrán hacerlo y, en su lugar, se les mostrará un mensaje de advertencia:

#rm -rf /etc
Skipping /etc

5. Al igual que en Windows, puede crear un directorio de basura y mover todos los archivos eliminados al directorio de basura. (No recomendado)

Esta no es una buena práctica, ya que sigue eliminando, estos archivos/carpetas aún se acumulan en el directorio de la papelera y también debe dedicar tiempo a eliminarlos. Aún así, si desea hacerlo, aquí está:cree un archivo del.sh con el siguiente contenido en /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

cree un alias para rm en su /etc/bashrc o /etc/profile

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

6. ¿Cree un script bash para que le avise cuando ejecute el comando rm? (Recomendado)

Cree un archivo del.sh con el siguiente contenido en /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

cree un alias para rm en su /etc/bashrc o /etc/profile

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

Linux
  1. [Linux]:cómo excluir el directorio cuando se usa el comando de shell "tar"

  2. ¿Cómo programar un comando Rsync?

  3. ¿Cómo puedo evitar o interrumpir copiar/pegar accidentalmente en la terminal?

  4. ¿Cómo evito rm -rf /* accidental?

  5. ¿Ansible evitará la ejecución de 'rm -rf /' en un script de shell?

Cómo usar el comando SS de Linux

Cómo eliminar un directorio en Linux

Cómo usar el comando nohup de Linux

Cómo rastrear la ejecución del programa usando el comando Strace de Linux

Cómo usar el comando PS

Cómo usar el comando SUPERIOR