前不久才因爲自己的一個手快執行了 “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
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
使其立即生效
刪除效果如下
注意:
- 如果想直接刪除而不是直接放進回收站,可以直接使用
/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
刪除文件時,則會報出問答信息以確定確實是所需要刪除的數據。
)