GNU/Linux >> Linux の 問題 >  >> Linux

[Linux]:「rm-rf」コマンドの誤った実行を防ぐ方法

人間として、次のような間違いを受け入れる必要があります: rm -rf * 起こり得る ! 「予防は治療よりも優れている」と言っているように、このような重要なコマンドの実行中はベストプラクティスに従います。ここでは、Linuxマシンでこのような偶発的な削除を回避する方法を紹介します。それでも、ファイルを削除して取得したい場合は、次の手順に従ってください:削除されたデータを取得する方法!

1. rm -rf ./*(推奨)を使用しないでください

実際のところ、パスの先頭で./の代わりに、*を使用してください。スラッシュは実際にはコマンドに値を追加せず、混乱を引き起こすだけです。上記のコマンドは、次のように書き直すことができます:

rm -rf *

2. rmのオプションとして「–preserve-root」を使用します(推奨)

rmコマンドには、ルートディレクトリが誤って削除されるのを防ぐための「–preserve-root」オプションが含まれていますが、この動作は古いマシンではデフォルトではありません。したがって、これからは/ etc/bashrcと/etc/profileに以下を追加するだけです。

alias rm=”rm -–preserve-root”

注:それでも削除する場合は、–no-preserve-root属性を使用できます

3.重要なディレクトリの削除を防ぎたい場合は? (推奨)

そのディレクトリに-iという名前のファイルを作成し、次のコマンドに従って実行します:

touch -- -i or touch ./-i

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

上記のコマンドは、それ自体を次のように変換します。rm -rf -i *ここで、-iはファイルをインタラクティブに削除します。したがって、ファイルを削除するたびにプロンプ​​トが表示されます!

4. safe-rmを使用する(推奨)

Safe-rmは、/ bin / rmをラッパーに置き換えることで、重要なファイルが誤って削除されるのを防ぐことを目的とした安全ツールです。ラッパーは、指定された引数を、削除してはならないファイルとディレクトリの構成可能なブラックリストと照合します。

これらの保護されたファイルまたはディレクトリの1つを削除しようとすると、削除できなくなり、代わりに警告メッセージが表示されます。

#rm -rf /etc
Skipping /etc

5. Windowsの場合と同様に、ごみ箱ディレクトリを作成し、削除したすべてのファイルをごみ箱ディレクトリに移動できます。 (非推奨)

これは良い習慣ではありません。削除を続けると、これらのファイル/フォルダはまだごみ箱ディレクトリに蓄積され、それらも削除するのに時間を費やす必要があります。それでも、それを実行したい場合は、次のようになります。/ usr / local /bin/の下に次のコンテンツを含むファイルdel.shを作成します。

#!/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

/ etc/bashrcまたは/etc/ profile

にrmのエイリアスを作成します
alias rm="/usr/local/bin/del.sh"

6. rmコマンドを実行したときに警告するbashスクリプトを作成しますか? (推奨)

/ usr / local /bin/の下に次の内容のファイルdel.shを作成します。

#!/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

/ etc/bashrcまたは/etc/ profile

にrmのエイリアスを作成します
alias rm="/usr/local/bin/del.sh"

Linux
  1. LinuxでSuコマンドを使用する方法

  2. Rm -r *コマンドの誤った実行を防ぐ方法は?

  3. 端末での誤ったコピー/貼り付けを防止または中断するにはどうすればよいですか?

  1. [Linux]:「tar」シェルコマンドを使用するときにディレクトリを除外する方法

  2. Rsyncコマンドをスケジュールする方法は?

  3. ユーザーが rm とワイルドカードの間に誤ってスペースを入力するのを防ぎます

  1. コマンドが失敗した場合の終了方法

  2. Linuxでコマンド実行をシリアル化するには?

  3. 誤って rm -rf /* を実行しないようにするにはどうすればよいですか?