目錄
- 一、背景
- 二、思路
- 三、測試
- 四、擴展
- 附:Linux中利用chattr命令防止文件被刪除
- 1. 概述
- 2. 具體的語法格式
- 3. 重要選項詳細解釋
- 4. 文件屬性
- 五、總結
一、背景
俗話說的真好,常在河邊走,怎能不濕鞋,本想刪除服務器上臨時的系統掃描文件如下圖:

由于是在root的家目錄,本想這/tmp/下有很多系統掃描文件,系統性的tab了一下,由于是自己的監控測試服務器也沒多想,tab了一下應該是有多個文件,之后直接跟*然后刪除全部掃描文件,但發現回車的一瞬間,發現/tmp只有一個掃描文件,瞬間頭皮發麻,雖然只是自己的測試服務器,但下面也有很多腳本和數據文件,心里又氣又恨。查看了下測試服務器只有一個根也沒其他磁盤,此時ext3grep/extundelete這類工具就沒辦法了,想想也是有其他辦法,但比較麻煩,算了就當買個教訓吧,里面寫個自定義rm命令腳本,來避免此類事情的發生。
二、思路
由于是過度自信,操作執行rm -rf手速感人,也沒多看,因此自定義rm命令即可
- 通過alias rm來移動文件到一個回收站目錄
- 定期的在系統磁盤允許可控的使用率情況下來對文件進行刪除
因此寫了一下腳本來實現,與其說放勿刪,不如說是延遲刪除更為確切
git地址
#!/bin/bash
# auth:kaliarch
# function:自定義rm命令,每天晚上定時清理
# 定義rm刪除命令替換腳本
CMD_SCRIPTS=$HOME/.rm_scripts.sh
# 定義回收站目錄
TRASH_DIR=$HOME/.TRASH_DIR
CRON_FILE=/var/spool/cron/root
BASHRC=$HOME/.bashrc
[ ! -d ${TRASH_DIR} ] mkdir -p ${TRASH_DIR}
cat gt; $CMD_SCRIPTS lt;gt; $CRON_FILE
echo "刪除目錄:$TRASH_DIR"
echo "刪除腳本:$CMD_SCRIPTS"
echo "請執行:source $BASHRC 來加載文件或退出當前shell重新登錄"
三、測試
運行腳本替換rm命令

之后推出重新登錄,或按提示source文件加載生效
腳本生成文件


可以看到在腳本運行用戶的家目錄,會生成回收站目錄和文件刪除腳本,會創建定時任務定時清理回收站,可以根據后期磁盤情況,自定義周期清理,
測試文件刪除

對文件或目錄進行rm命令操作,可以發現是已經成功移動到回收站,定時任務會定時清理該目錄下的東西,延遲我們日常rm -rf 誤操作命令
四、擴展
- 作為工程師,日常操作一定還是要小心
- 使用云服務器,做好定時快照策略
- 如果為傳統服務器做好文件異地備份
- 安裝使用數據恢復軟件工具ext3grep、extundelete等第一時間恢復誤操作數據。
附:Linux中利用chattr命令防止文件被刪除
我們都知道,Linux是個很強大的系統。每個文件都有一定的權限,有的用戶可以處理,有的只有root用戶可以刪除。但人總會有失誤的時候,比如我們在root用戶里用命令“sudo rm -fr ‘文件夾名' ”,這會使得我們很沮喪。有時候,我們把一個重要的文件夾放在主文件夾里,有時一不小心,我們就會把它誤刪了。
哈哈,Linux里有一個十分有用的命令“chattr”, 它會很好的解決我們的問題。
1. 概述
linux中鍵入“man chattr”,其描述為“chattr changes the file attributes on a Linux file system.”從這我們很容易得出:在Linux文件系統里,chattr是可以改變文件的屬性。
2. 具體的語法格式
chattr [ -RVf ] [ -v version ] [ mode ] files...[1]
注:中括號是可選選項,而 files 表明其為參數,必須要有。如果您加上版本號(-v),您必須 鍵入版本號。如:chattr -v 1.8 files
3. 重要選項詳細解釋
接下來我們分析,一些對我們有用的選項
- -R 對于本條命令遞歸更改文件的屬性。(即文件夾和文件甚至文件夾里的子文件和子文件夾都附上相同的屬性)
- -V 輸出詳細的信息,如果有版本號的話,并輸出版本號
- -v 設置文件的版本號
4. 文件屬性
1)mode 選項
就是[1]中,[mode] 選項,而此選項格式為 “+文件屬性”或“-文件屬性”或“=文件屬性”
- “+文件屬性” 就是添加該屬性
- “-文件屬性”去掉此屬性
- “=文件屬性” 此文件有且只有這屬性
2)文件屬性
- a 文件是否只能添加,修改,而不能刪除
- c 文件夾是否能添加壓縮文件
- s 安全刪除
- u 不可刪除
注:c,s,u不能在ext2,ext3,ext4文件系統
如果你的文件系統是其中之一,你就使用a屬性,可以避免你的文件被刪除。
如:sudo chattr -V +a file
解除鎖定:
sudo chattr -V -a file
五、總結
到此這篇關于Linux自定義防誤刪腳本的文章就介紹到這了,更多相關Linux自定義防誤刪腳本內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Windows和Linux下定時刪除某天前的文件的腳本
- Linux下通過腳本自動備份Oracle數據庫并刪除指定天數前的備份
- linux刪除無效鏈接文件腳本分享
- Linux使用shell腳本定時刪除歷史日志文件