前记:
脚本称为《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