rm安全删除(一条命令变rm为mv)

        习惯root账号登陆操作,习惯使用命令rm -rf file,一次手误,使用了rm -rf ./xxx*,结果删除了不该删除的文件,虽然不是很严重的后果,但是还是有点后怕的,怕哪天一不小心rm -rf *,那就只有跑路了。。。

        不使用root账号操作,偶尔别扭,所以还是自行更改rm命令吧,两个脚本,执行脚本实现rm到mv的转变

实例系统:

拷贝两文件到服务器,也就是实例的rmdev及rmdev.sh

vim  rmdev

#!/bin/bash

TRASH_DIR="/tmp/userdel/${USER}/.trash"
mkdir -p $TRASH_DIR


SBRUN() {
        echo -ne "\033[41;37mWhy run this command\033[0m\n"
        exit 255
}

#严禁执行(笨拙代码段,可优化)
for i in ${@};do [ "$i" = "/" ] && SBRUN ;done
for i in ${@};do [ "$i" = "/root" ] && SBRUN ;done
for i in ${@};do [ "$i" = "/home" ] && SBRUN ;done
for i in ${@};do [ "$i" = "/root/" ] && SBRUN ;done
for i in ${@};do [ "$i" = "/home/" ] && SBRUN ;done

RMPATH=""
# rm -rf时要去掉-rf参数
for arg in "$@"
do
  IS_ARG=$(echo "$arg" | grep "^-")
  if [ -z "$IS_ARG" ]; then
    if [ -n "$RMPATH" ]; then
      RMPATH="${RMPATH} "
    fi
    RMPATH="${RMPATH} $arg"
  fi
done

if [ -n "$RMPATH" ]; then
  FILE_PARENT_DIR=$(pwd $RMPATH)
  SUFFIX=$(echo `date "+%y%m%d"`)
  SUFFIX1=$(echo `date "+%H%M%S"`)

  #备份文件名称
  FILE_TRASH_DIR="${TRASH_DIR}/${SUFFIX}/${SUFFIX1}/${FILE_PARENT_DIR}.rm.tmp"

  if [ ! -d "$FILE_TRASH_DIR" ]; then
    mkdir -p $FILE_TRASH_DIR
  fi
  mv $RMPATH "${FILE_TRASH_DIR}"
fi

vim  rmdev.sh

#!/bin/bash

cp ./rmdev  /bin/rmdev
chmod 755 /bin/rmdev
#定期删除文件
echo '0 10 * * 1 \rm -rf /tmp/userdel/*' >> /var/spool/cron/root
[ -f /etc/bash.bashrc ] && (sed -i "/rmdev/d" /etc/bash.bashrc && echo 'alias rm="/bin/rmdev"' >> /etc/bash.bashrc && . /etc/bash.bashrc)
[ -f /etc/bashrc ] && (sed -i "/rmdev/d" /etc/bashrc && echo 'alias rm="/bin/rmdev"' >> /etc/bashrc && . /etc/bashrc)
[ -f /root/.bashrc ] && (sed -i "/alias rm/d" /root/.bashrc && echo 'alias rm="/bin/rmdev"' >> /root/.bashrc && . /root/.bashrc)
[[ -f "~/.bashrc" && "$USER" != "root" ]] &&(sed -i "/alias rm/d" ~/.bashrc && echo 'alias rm="/bin/rmdev"' >> ~/.bashrc && . ~/.bashrc)

增加脚本执行权限:chmod +x rmdev.sh

执行脚本,重新登陆即可生效

./rmdev.sh

删除演示:

删除文件

严禁执行的目录,给出提示并强制退出执行

删除文件后,会在/tmp/userdel目录下生成执行用户的目录,此用户删除的文件都在此目录下的.trash目录里面,根据删除时间可以找到具体删除的文件

定期清理/tmp/userdel目录,\rm代表使用系统的rm命令

-----------日常记录---------------

猜你喜欢

转载自blog.csdn.net/w50feng/article/details/104924159