1. 程式人生 > >如何優雅地使用 rm 防止誤刪除?

如何優雅地使用 rm 防止誤刪除?

fir 技術分享 etc 定向 方案 軟件工程師 全部 最大 就是

IT 界的有一個老梗,一次某論壇的數據庫管理員抱怨自己老板一直虐待他,結果他一氣之下就刪庫跑路了......

於是...

據新華社北京 8 月 20 日電 ,北京一軟件工程師徐某離職後因公司未能如期結清工資,便利用其在所設計的網站中安插的後門文件將網站源代碼全部刪除。記者 20 日從北京市豐臺區人民法院獲悉,徐某破壞計算機信息系統罪成立,獲刑五年。

技術分享圖片

我在服務器維護的時候不小心執行了 rm -rf 命令......現在整臺服務器被我刪光了腫麽辦???

技術分享圖片

好吧,現在先來介紹一下 rm

rm -rf 的威力

rm 是 linux 系統下刪除文件的命令,-r 代表刪除這個下面的一切,一切的一切那種的一切。f

表示不需要用戶確認,直接執行。

通常這個命令都是指定文件夾用的,比如

rm -rf /home/test/

就是刪除 /home/test/ 這個文件夾下面的所有東西。

但是如果後面的文件夾路徑沒有加對,

rm -rf / 在服務器上也就意味著...

技術分享圖片

俗話說的好:常在河邊走, 哪能不濕鞋。 那該怎麽避免這種悲劇的發生呢?

如何避免再次跑路?

一個方案就是重定向 rm 命令以嫁接為 mv 命令, 相當於給 Linux 系統定制了一個回收站。

實現方式如下:

### 重定義rm命令 ###

# 定義回收站目錄
trash_path=‘~/.trash‘

# 判斷 $trash_path 定義的文件是否存在,如果不存在,那麽就創建 $trash_path.
if [ ! -d $trash_path ]; then
    mkdir -p $trash_path
fi

# 定義別名:使用 rm 就調用 trash
alias rm=trash

# 使用 rl 就調用 ‘ls ~/.trash‘ 
# 如果更改上面的回收站目錄這裏的目錄也需要修改
alias rl=‘ls ~/.trash‘

# 使用 unrm 就調用 restorefile,需要在刪除目錄的父目錄下執行
alias unrm=restorefile

# 使用 rmtrash 就調用 claearteash
alias rmtrash=cleartrash

# 恢復文件的函數
restorefile()
{
    mv -i ~/.trash/$@  ./
}
 
# 刪除文件的函數
trash()
{  
    mv $@  ~/.trash/
}
 
# 清空回收站的函數
cleartrash()
{
    read -p "確定要清空回收站嗎?[y/n]" confirm
    [ $confirm == ‘y‘ ] || [ $confirm == ‘Y‘ ]  && /bin/rm -rf  ~/.trash/*
}

最後將上述腳本寫入 /etc/bashrc,並立即執行命令 source /etc/bashrc 即刻生效。

技術分享圖片

使用

這個腳本定義了幾個命令:

  • rl:查看回收站下的文件
  • unrm 文件名或目錄:恢復到當前的路徑下
  • rmtrash:清空回收站,不過會友好提示。

執行 rm 不會真正刪除,而是使用 mv 移動到我們指定的回收站。

實在真的想刪除可以 /bin/rm 來進行刪除。

另外,需要註意的時,之前 rm 指令的一些參數可能不再使用,因為 rm 現在其實是 mv 了。

# touch hoxistest
# touch 1
# mkdir haha
# ls
1  haha  hoxistest
# rm 1
# ls
haha  hoxistest

# 查看回收站文件
# rl
1  myftp1

# 恢復已刪除文件
# unrm 1
[root@CESHI-CLM-10-254-4-48 test]# ls
1  haha  hoxistest

# rm haha/
# rm hoxistest
# rl
haha  hoxistest

# 情況回收站
# rmtrash
確定要清空回收站嗎?[y/n]y
# rl

效果看著應該還可以吧。

技術分享圖片

例行總結

看著是還可以,但是也有一些問題,比如刪除文件不能重名,若重名了會提示你是否進行覆蓋。那就需要再進行特殊處理了,比如刪除時加個時間戳什麽的,有興趣的動手實現下吧。

via:https://www.cloudbility.com/club/6981.html


如果覺得有用,歡迎關註我的微信,一起學習,共同進步,不定期推出贈書活動~

技術分享圖片

最近搜集到慕課網視頻,視頻內容涵蓋 Python、Java、PHP、前端、小程序、算法、架構、數據庫等等!關註本公眾號,後臺回復「慕課網」即可獲取下載地址。

如何優雅地使用 rm 防止誤刪除?