目錄
- 一、背景
- 二、思路
- 三、測試
- 四、擴(kuò)展
- 附:Linux中利用chattr命令防止文件被刪除
- 1. 概述
- 2. 具體的語法格式
- 3. 重要選項(xiàng)詳細(xì)解釋
- 4. 文件屬性
- 五、總結(jié)
一、背景
俗話說的真好,常在河邊走,怎能不濕鞋,本想刪除服務(wù)器上臨時(shí)的系統(tǒng)掃描文件如下圖:
由于是在root的家目錄,本想這/tmp/下有很多系統(tǒng)掃描文件,系統(tǒng)性的tab了一下,由于是自己的監(jiān)控測試服務(wù)器也沒多想,tab了一下應(yīng)該是有多個(gè)文件,之后直接跟*然后刪除全部掃描文件,但發(fā)現(xiàn)回車的一瞬間,發(fā)現(xiàn)/tmp只有一個(gè)掃描文件,瞬間頭皮發(fā)麻,雖然只是自己的測試服務(wù)器,但下面也有很多腳本和數(shù)據(jù)文件,心里又氣又恨。查看了下測試服務(wù)器只有一個(gè)根也沒其他磁盤,此時(shí)ext3grep/extundelete這類工具就沒辦法了,想想也是有其他辦法,但比較麻煩,算了就當(dāng)買個(gè)教訓(xùn)吧,里面寫個(gè)自定義rm命令腳本,來避免此類事情的發(fā)生。
二、思路
由于是過度自信,操作執(zhí)行rm -rf手速感人,也沒多看,因此自定義rm命令即可
- 通過alias rm來移動(dòng)文件到一個(gè)回收站目錄
- 定期的在系統(tǒng)磁盤允許可控的使用率情況下來對文件進(jìn)行刪除
因此寫了一下腳本來實(shí)現(xiàn),與其說放勿刪,不如說是延遲刪除更為確切
git地址
#!/bin/bash
# auth:kaliarch
# function:自定義rm命令,每天晚上定時(shí)清理
# 定義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 "請執(zhí)行:source $BASHRC 來加載文件或退出當(dāng)前shell重新登錄"
三、測試
運(yùn)行腳本替換rm命令
之后推出重新登錄,或按提示source文件加載生效
腳本生成文件
可以看到在腳本運(yùn)行用戶的家目錄,會(huì)生成回收站目錄和文件刪除腳本,會(huì)創(chuàng)建定時(shí)任務(wù)定時(shí)清理回收站,可以根據(jù)后期磁盤情況,自定義周期清理,
測試文件刪除
對文件或目錄進(jìn)行rm命令操作,可以發(fā)現(xiàn)是已經(jīng)成功移動(dòng)到回收站,定時(shí)任務(wù)會(huì)定時(shí)清理該目錄下的東西,延遲我們?nèi)粘m -rf 誤操作命令
四、擴(kuò)展
- 作為工程師,日常操作一定還是要小心
- 使用云服務(wù)器,做好定時(shí)快照策略
- 如果為傳統(tǒng)服務(wù)器做好文件異地備份
- 安裝使用數(shù)據(jù)恢復(fù)軟件工具ext3grep、extundelete等第一時(shí)間恢復(fù)誤操作數(shù)據(jù)。
附:Linux中利用chattr命令防止文件被刪除
我們都知道,Linux是個(gè)很強(qiáng)大的系統(tǒng)。每個(gè)文件都有一定的權(quán)限,有的用戶可以處理,有的只有root用戶可以刪除。但人總會(huì)有失誤的時(shí)候,比如我們在root用戶里用命令“sudo rm -fr ‘文件夾名' ”,這會(huì)使得我們很沮喪。有時(shí)候,我們把一個(gè)重要的文件夾放在主文件夾里,有時(shí)一不小心,我們就會(huì)把它誤刪了。
哈哈,Linux里有一個(gè)十分有用的命令“chattr”, 它會(huì)很好的解決我們的問題。
1. 概述
linux中鍵入“man chattr”,其描述為“chattr changes the file attributes on a Linux file system.”從這我們很容易得出:在Linux文件系統(tǒng)里,chattr是可以改變文件的屬性。
2. 具體的語法格式
chattr [ -RVf ] [ -v version ] [ mode ] files...[1]
注:中括號(hào)是可選選項(xiàng),而 files 表明其為參數(shù),必須要有。如果您加上版本號(hào)(-v),您必須 鍵入版本號(hào)。如:chattr -v 1.8 files
3. 重要選項(xiàng)詳細(xì)解釋
接下來我們分析,一些對我們有用的選項(xiàng)
- -R 對于本條命令遞歸更改文件的屬性。(即文件夾和文件甚至文件夾里的子文件和子文件夾都附上相同的屬性)
- -V 輸出詳細(xì)的信息,如果有版本號(hào)的話,并輸出版本號(hào)
- -v 設(shè)置文件的版本號(hào)
4. 文件屬性
1)mode 選項(xiàng)
就是[1]中,[mode] 選項(xiàng),而此選項(xiàng)格式為 “+文件屬性”或“-文件屬性”或“=文件屬性”
- “+文件屬性” 就是添加該屬性
- “-文件屬性”去掉此屬性
- “=文件屬性” 此文件有且只有這屬性
2)文件屬性
- a 文件是否只能添加,修改,而不能刪除
- c 文件夾是否能添加壓縮文件
- s 安全刪除
- u 不可刪除
注:c,s,u不能在ext2,ext3,ext4文件系統(tǒng)
如果你的文件系統(tǒng)是其中之一,你就使用a屬性,可以避免你的文件被刪除。
如:sudo chattr -V +a file
解除鎖定:
sudo chattr -V -a file
五、總結(jié)
到此這篇關(guān)于Linux自定義防誤刪腳本的文章就介紹到這了,更多相關(guān)Linux自定義防誤刪腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Windows和Linux下定時(shí)刪除某天前的文件的腳本
- Linux下通過腳本自動(dòng)備份Oracle數(shù)據(jù)庫并刪除指定天數(shù)前的備份
- linux刪除無效鏈接文件腳本分享
- Linux使用shell腳本定時(shí)刪除歷史日志文件