前記:
腳本稱爲《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