GNU/Linux >> Znalost Linux >  >> Linux

[Linux]:Jak zabránit náhodnému spuštění příkazu „rm -rf“.

Jako lidé bychom měli přijmout chyby jako:rm -rf * by se stalo ! Když říkáme „Prevence je lepší než léčba“, budeme se při provádění takových kritických příkazů řídit osvědčenými postupy. Zde vám ukážeme, jak se vyhnout takovým nehodovým smazáním na vašich počítačích se systémem Linux. Přesto, pokud jste smazali soubory a chcete je obnovit, postupujte takto: jak můžete obnovit smazaná data !

1. Nikdy nepoužívejte rm -rf ./* (doporučeno)

Pro praxi použijte místo ./ na začátku cesty *. Lomítka skutečně nepřidávají příkazu žádnou hodnotu a způsobí pouze zmatek. Výše uvedený příkaz lze lépe přepsat jako :

rm -rf *

2. Jako možnost rm použijte „–preserve-root“ (doporučeno)

Příkaz rm obsahuje volbu „–preserve-root“, která zabraňuje náhodnému smazání kořenového adresáře, ale toto chování není na starších počítačích výchozí. Od této chvíle jednoduše přidejte do /etc/bashrc a /etc/profile následující:

alias rm=”rm -–preserve-root”

Poznámka:Pokud přesto chcete smazat / můžete použít atribut –no-preserve-root

3. Chcete-li zabránit smazání důležitého adresáře? (Doporučeno)

V tomto adresáři vytvořte soubor s názvem -i a postupujte podle níže uvedeného příkazu:

touch -- -i or touch ./-i

Nyní zkuste 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

Výše uvedený příkaz se překládá na:rm -rf -i *, kde -i znamená interaktivní mazání souborů. Takže to vyzve ke každému smazání souboru!

4. Použijte safe-rm (doporučeno)

Safe-rm je bezpečnostní nástroj, který má zabránit náhodnému smazání důležitých souborů nahrazením /bin/rm obalem, který kontroluje dané argumenty proti konfigurovatelné černé listině souborů a adresářů, které by nikdy neměly být odstraněny.

Uživatelé, kteří se pokusí smazat jeden z těchto chráněných souborů nebo adresářů, to nebudou moci udělat a místo toho se jim zobrazí varovná zpráva:

#rm -rf /etc
Skipping /etc

5. Stejně jako v systému Windows můžete vytvořit adresář koše a přesunout všechny smazané soubory do adresáře koše. (Nedoporučuje se)

To není dobrý postup, protože stále mažete, tyto soubory/složky se stále hromadí v adresáři koše a musíte trávit čas jejich mazáním. Pokud byste to přesto chtěli udělat, zde je:Vytvořte soubor del.sh s následujícím obsahem v /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

vytvořte alias pro rm ve vašem /etc/bashrc nebo /etc/profile

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

6. Vytvořte bash skript, který vás upozorní, když spustíte příkaz rm? (Doporučeno)

Vytvořte soubor del.sh s následujícím obsahem v /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

vytvořte alias pro rm ve vašem /etc/bashrc nebo /etc/profile

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

Linux
  1. Jak zabránit náhodnému spuštění příkazu Rm -r *?

  2. Jak ukončit, pokud příkaz selhal?

  3. Jak mohu zabránit nebo přerušit náhodné kopírování/vložení v terminálu?

  1. Zabraňte náhodnému zadání mezery mezi rm a zástupným znakem

  2. Jak serializovat provádění příkazů na linuxu?

  3. Zabrání Ansible spuštění 'rm -rf /' ve skriptu shellu

  1. Jak používat Su Command v Linuxu

  2. [Linux] :Jak vyloučit adresář při použití příkazu shellu „tar“.

  3. Jak naplánovat příkaz Rsync?