一天一點(2)防止 rm 誤刪除

前不久才因爲自己的一個手快執行了 “rm /*”,誤刪除了整個根目錄。數據丟失的教訓有時候是巨大而難以承受的。

2. 防止 rm 誤刪除

2.1 一條危險的命令 rm -rf

rm -rf 常被用來刪除文件或目錄,因爲使用它的時候可以快速刪除所需要刪除的文件或目錄,而又不需要反覆確認。

rm 命令,可以刪除一個目錄中的一個或多個文件或目錄,也可以將某個目錄以及目錄下的所有子目錄和文件都刪除。對於鏈接文件,則只是刪除整個鏈接文件,不刪除原有文件。

-rf 參數。-r-R ,遞歸處理,將指定目錄下的所有文件以及子目錄一併處理掉;-f 表示強制刪除文件或目錄。

2.2 建立回收站機制防止誤刪

建立回收站機制後,當你在刪除數據的時候,並不是真的在刪除數據,而是將文件移動到一個特定的目錄中。相當於看似執行的是 rm 命令實際上執行的是 mv 命令。

2.2.1 建立過程

對於要建立回收站機制,可以通過寫 Shell 腳本替換 rm 命令,或者在需要刪除文件的時候使用 mv 命令將文件移動到回收站。

  • /home/username/ 目錄下新建一個目錄,並命名爲 .trash
  • /home/username/tools/ 目錄下,新建一個 Shell 腳本,命名爲 remove.sh
  • remove.sh 賦予執行權限: chmod +x /home/username/tools/remove.sh
    .trash

  • remove.sh腳本內容如下

# /home/username/tools/remove.sh
TRASH_DIR="/home/username/.trash"
for i in $*; do  
    STAMP=`date +%y%m%d-%H:%M:%S`  
    fileName=`basename $i`  
    mv $i $TRASH_DIR/$fileName.$STAMP  
done
  • 修改 ~/.bashrc , 增加下面一行
alias rm="sh /home/username/tools/remove.sh"

rm 設置別名,使用我們自己建的 remove.sh 替代 rm 命令

  • 設置 /etc/crontab 定時計劃,定期清空垃圾箱,例如
0 0 * * * rm -rf /home/username/.trash/*
  • 執行 source ~/.bashrc 使其立即生效
    刪除效果如下
    rm

注意:

  • 如果想直接刪除而不是直接放進回收站,可以直接使用 /bin/rm 來刪除
  • rm 之前的一些參數將會失效,因爲現在使用的其實是 mv
  • 而在使用新腳本刪除文件時,如果刪除的文件重名,會提示是否進行覆蓋。

2.3 注意命令 rm -rf 變量的使用

在腳本中應該儘量避免使用 rm -rf $FOO/ , 而推薦使用 rm -rf $FOO ;刪除儘量不要寫相對路徑,不要帶變量

提醒:我就是栽在了這裏頭了

2.4 備份重要數據

將重要的數據進行異地遠程備份也是一種保障數據安全的方式。

2.5 rm-protection

2.5.1 rm-protection 介紹

這是一個完全兼容 rm 的數據保護工具。如果安裝它,當在執行 rm 命令之前,會檢查所要刪的每一個文件或目錄是否被保護。通過 rm-protection 命令可以爲一個文件或目錄設置一個安全問題與回答。

項目地址爲:rm-protection

2.5.2 rm-protection 安裝

可以直接通過 pip install rm-protection , 可以有選擇性地爲其設置別名如 rm-p 簡化命令行。
通過執行 protection filename , 對文件進行保護,當使用 rm -rf filname 刪除文件時,則會報出問答信息以確定確實是所需要刪除的數據。
rp-protection)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章