rm 防誤刪腳本

前記:
腳本稱爲《rm後悔藥》吧,雖然多年運維,依舊沒法避免誤操做,既然沒法避免,就作好誤刪準備。腳本參考以前轉載的文章,進行了簡單的完善。
腳本內容:shell

#!/bin/bash

#建立回收站
mkdir -p /opt/apps/.recover/
chmod 777 /opt/apps/.recover
mkdir -p /opt/apps/shell/
#建立回收腳本
cat >/opt/apps/shell/remove.sh <<EOF
#!/bin/bash
RECOVER_DIR="/opt/apps/.recover/\$USER"
if [[ ! -d "/opt/apps/.recover/\$USER" ]]
then
    mkdir "/opt/apps/.recover/\$USER"
fi
for i in \$*; do
    STAMP=\`date +%s\`
    fileName=\`basename \$i\`
    mv \$i \$RECOVER_DIR/\$fileName.\$STAMP
done
EOF

chmod +x /opt/apps/shell/remove.sh

#增長環境變量
cat >>/etc/bashrc <<EOF
alias rm='sh /opt/apps/shell/remove.sh'
EOF

#設置rm別名,用於刪除back文件
ln -s /usr/bin/rm /usr/bin/rm-rm

#設置凌晨清空文件
cat >>/etc/crontab <<EOF
0 3 * * * root rm -rf /opt/apps/.recover/*
EOF
#生效環境變量
source /etc/bashrc

簡單說明下:
1.將要刪除的文件mv至回收站,凌晨3點清空。
2.爲何要加入/etc/bashrc呢?由於用戶交互式登錄系統或者交互式非登錄系統,/etc/bashrc都會執行,這樣,系統全部用戶均可以共享此功能。
3.將rm軟鏈接rm-rm,有臨時須要永久刪除的文件,能夠使用此命令當即生效
4.爲何計劃任務要使用rm呢?由於計劃任務是非交互非登錄的,環境變量不生效bash

相關文章
相關標籤/搜索