rm 防誤刪指令碼
阿新 • • 發佈:2020-12-15
前記:
指令碼稱為《rm後悔藥》吧,雖然多年運維,依舊無法避免誤操作,既然無法避免,就做好誤刪準備。指令碼參考之前轉載的文章,進行了簡單的完善。
指令碼內容:
#建立回收站 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呢?因為計劃任務是非互動非登陸的,環境變數不生效