Linux自定義防誤刪腳本的思路與測試

一、背景

俗話說的真好,常在河邊走,怎能不濕鞋,本想刪除服務器上臨時的系統掃描文件如下圖:

由於是在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 > $CMD_SCRIPTS <> $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自定義防誤刪腳本內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: