Ubuntu rm -rf映射, 防止手误删除重要文件

创建脚本 新机器配置一次即可

sudo vi /home/safe_rm.sh
#!/bin/bash
 
TRASH_DIR="$HOME/.rm_backup"
 
if [ ! -d $TRASH_DIR ]; then
    mkdir $TRASH_DIR
fi
 
for i in $*; do
    if [[ "$i" == "-rf"  ]];then
        continue
    elif [[ "$i" == "-r" ]];then
        continue
    elif [[ "$i" == "-f" ]];then
        continue
    fi
 
    #echo "参数 $i"
    STAMP=`date -d today +"%Y-%m-%d-%T"`
    fileName=`basename -- $i`
    first_char="${i:0:1}"
    #echo $first_char
    if [[ "$first_char" == "/" ]];then
            echo "["$STAMP"] del from "$i >> $TRASH_DIR/rm.log
    else
            echo "["$STAMP"] del from "`pwd`"/"$i >> $TRASH_DIR/rm.log
    fi
    mv $i $TRASH_DIR/$fileName.$STAMP
    echo "move to "$TRASH_DIR
done

修改.bashrc 每个用户都要运行

sudo vi ~/.bashrc

添加一行

alias rm="bash /home/safe_rm.sh"

替换更新 每个用户都要运行

source ~/.bashrc

删除垃圾

这边rm 映射后 当前用户不能真正的删除文件,会造成mv的死循环

人工删除

0、sudo rm
1、切换到没有映射的账户,然后再删除;
2、vscode 在目录下鼠标操作删除。

定期清理超过7天的垃圾 每个用户都要运行

find -exec 后的 rm 不受映射影响

crontab -e
0 0 * * *  find ~/.rm_backup -mtime  +7 -exec  rm -rf {} \;

参考
https://blog.csdn.net/QQ1183678930/article/details/118484482
https://www.cnblogs.com/rianley/p/9259008.html
https://blog.csdn.net/why_smile/article/details/104888617

posted @ 2023-02-19 20:44  MasonLee  阅读(82)  评论(0编辑  收藏  举报