GNU/Linux >> Belajar Linux >  >> Linux

[Linux]:Bagaimana mencegah eksekusi perintah "rm -rf" yang tidak disengaja

Sebagai manusia kita harus menerima kesalahan seperti :rm -rf * akan terjadi ! Seperti mengatakan "Mencegah lebih baik daripada mengobati" kita akan mengikuti praktik terbaik selama pelaksanaan perintah kritis tersebut. Di sini kami akan menunjukkan kepada Anda cara menghindari penghapusan yang tidak disengaja pada mesin Linux Anda. Masih jika Anda telah menghapus file dan ingin mengambilnya kembali, ikuti: bagaimana Anda dapat mengambil data yang dihapus !

1. Jangan pernah menggunakan rm -rf ./* (Disarankan)

Sebagai latihan, alih-alih ./ di awal jalur, gunakan saja *. Garis miring benar-benar tidak menambah nilai pada perintah dan hanya akan menyebabkan kebingungan. Perintah di atas dapat ditulis ulang dengan lebih baik sebagai :

rm -rf *

2. Gunakan “–preserve-root” sebagai opsi untuk rm (Disarankan)

Perintah rm menyertakan opsi “–preserve-root” untuk mencegah penghapusan direktori root secara tidak sengaja, tetapi perilaku itu bukan default di mesin lama. Jadi cukup tambahkan yang berikut ini ke /etc/bashrc dan /etc/profile mulai sekarang:

alias rm=”rm -–preserve-root”

Catatan:Jika Anda masih ingin menghapus / Anda dapat menggunakan atribut –no-preserve-root

3. Jika Anda ingin mencegah penghapusan direktori penting? (Disarankan)

Buat file bernama -i di direktori itu dan untuk melakukannya ikuti perintah di bawah ini:

touch -- -i or touch ./-i

Sekarang coba 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

Perintah di atas diterjemahkan menjadi:rm -rf -i *, di mana -i adalah untuk menghapus file secara interaktif. Jadi itu meminta untuk setiap penghapusan file !

4. Gunakan safe-rm (Disarankan)

Safe-rm adalah alat keamanan yang dimaksudkan untuk mencegah penghapusan file penting secara tidak sengaja dengan mengganti /bin/rm dengan pembungkus, yang memeriksa argumen yang diberikan terhadap daftar hitam file dan direktori yang dapat dikonfigurasi yang tidak boleh dihapus.

Pengguna yang mencoba menghapus salah satu file atau direktori yang dilindungi ini tidak akan dapat melakukannya dan sebagai gantinya akan ditampilkan pesan peringatan:

#rm -rf /etc
Skipping /etc

5. Seperti di windows, Anda dapat membuat direktori tempat sampah dan memindahkan semua file yang dihapus ke direktori tempat sampah. (Tidak disarankan)

Ini bukan praktik yang baik, karena Anda terus menghapus, file/folder ini masih terakumulasi di direktori tempat sampah dan Anda perlu meluangkan waktu untuk menghapusnya juga. Masih jika Anda ingin melakukannya, ini dia:Buat file del.sh dengan konten berikut di bawah /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

buat alias untuk rm di /etc/bashrc atau /etc/profile

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

6. Buat skrip bash untuk memperingatkan Anda ketika Anda menjalankan perintah rm? (Disarankan)

Buat file del.sh dengan konten berikut di bawah /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

buat alias untuk rm di /etc/bashrc atau /etc/profile

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

Linux
  1. Bagaimana Cara Menjadwalkan Perintah Rsync?

  2. Bagaimana Mencegah Eksekusi Perintah Rm -r * yang tidak disengaja?

  3. Bagaimana saya bisa mencegah atau menghentikan salin/tempel yang tidak disengaja di terminal?

  1. [Linux] :Cara mengecualikan direktori saat menggunakan perintah shell "tar"

  2. Bagaimana cara keluar jika perintah gagal?

  3. Cegah pengguna mengetik ruang yang tidak disengaja antara rm dan wildcard

  1. Bagaimana cara membuat serial eksekusi perintah di linux?

  2. Bagaimana cara mencegah rm -rf /* yang tidak disengaja?

  3. Akankah Ansible mencegah eksekusi 'rm -rf /' dalam skrip shell