linux封裝rm rf指令,防止誤刪

2021-08-10 04:30:30 字數 1686 閱讀 6656

對於乙個linux新手,敲錯指令是常有的事情,智者千慮必有一失,即使對於乙個老司機來說,也難免會有操作失誤的時候,而誤刪導致的後果往往是無法彌補的。與其在誤刪資料後懊悔,不如趁早尋求方法避免這種錯誤的發生。這裡採用alias對rm指令設定別名,使得執行rm指令的時候,實際上執行了mv指令而將需要刪除的檔案放到自己建立的**站之中。

一、首先編寫shell指令碼

1.changerm.sh 用於改變rm指令,**如下:

#!/bin/sh

trash_dir=/trash/`date +%y%m%d` #自己建立的**站路徑,本次為/trash/

if [ ! -d $ ] ;then

mkdir -p $

fifor i in $*

do suffix=`date "+%h%m%s"`

if [ ! -d "$" ]&&[ ! -f "$" ];then #首先判斷是否是合法的檔案或者資料夾

if [[ "$" != "-rf" && "$" != "-f" ]];then #這裡對-rf進行處理,因為mv指令後面沒有-rf,-f引數

echo "[$] do not exist"

fielse

file_name=`basename $i` #取得檔名稱

mv $ $/$_$_$

echo "[$] delete completed"

fidone

2.cleartrash.sh 用於定期清理**站(因為對rm -rf進行封裝後,實際上檔案只是移動到了自己新建的**站目錄,並未進行實際的刪除操作)

#!/bin/sh

trashdir=/trash

cd $

find ./ -mtime +3 -exec 'rm' -rf {} \; #找到**站中修改日期大於3天的檔案,執行真正的刪除

(注:rm被封裝後,帶引號的』rm』執行的是真正的刪除)

二、為rm指令設定別名

1.修改/etc/bashrc

vim /etc/bashrc在檔案最後新增(注:/home/shell路徑按照實際情況進行修改):

alias rm='sh /home/shell/changerm.sh'         #表示執行rm指令的時候其實相當於自行了changerm.sh的指令碼
alias rm='sh /home/shell/changerm.sh'
三、新增crontab計畫,定時執行cleartrash.sh指令

使用crontab -e命令進入定時任務編輯介面,在最後面加入(注:/home/shell路徑按照實際情況進行修改):

00 22 * * * sh /home/shell/cleartrash.sh     #每天22:00執行清理**站的指令碼
service crond restart重啟crontab服務,使用crontab -l命令如果可以看到剛才新增的那段話,則證明新增成功

最後補充一句:使用該方法封裝rm-rf指令後確實可以避免誤刪,但是如果執行帶單引號的』rm』 -rf操作,就會呼叫系統原先的刪除功能,不經過封裝指令碼,直接刪除檔案。

linux下防止rm rf 處理

很不幸,之所以要寫這篇文章。是因為自己嚐過其中的痛。不過還好只是在自己虛擬機器上誤刪。為了防止以上事情的再次發生,寫一下我現在處理方式。現在網上的處理方案主要是 1 將刪除改為mv命令,然後再去 站清除檔案。2 用afe rm代替rm,設定部分白名單,減小誤刪時候損失程度。3 用rm rfi 代替r...

如何防止rm rf 導致系統癱瘓?

公司的dev環境是開發人員能登入,並且開發有root許可權。但是由於每個開發的linux水平不一樣,有一些開發竟然直接 使用 rm rf 導致整個系統癱瘓了,系統也起不來,由於之前沒有備份所以沒辦法恢復 wget2.解壓safe rm tar zxf safe rm 0.12.tgz3.複製safe...

封裝vue指令

指令的定義一定要放到 new vue 之前,否則報錯並且無效 在註冊指令的時候,不需要加上v 這個字首 在dom元素上使用的時候,必須加上v 字首 乙個指令定義物件可以提供如下幾個鉤子函式 均為可選 bind 只呼叫一次,指令第一次繫結到元素時呼叫,在這裡可以進行一次初始化設定 inserted 被...