美文网首页
Linux OS下替换`rm`为`mv`, 防止文件误删

Linux OS下替换`rm`为`mv`, 防止文件误删

作者: hualong1009 | 来源:发表于2019-07-30 17:34 被阅读0次

    Linux OS下替换rmmv, 防止文件误删

    Linux下command操作,一个迷糊就可能遇到删库跑路的可能,比如杀手rm -fr *, 这里提供一种方法替换Linux下的rmmv, 实现删除文件备份的功能

    操作方法

    /root/.bashrc中添加如下内容

    function rm_mv(){
        curr_date=$(date +%Y_%m_%d)
        resp=""
        if [ ! -e /tmp/${curr_date} ];then
            mkdir -p /tmp/${curr_date}
        fi
        if echo $1 | grep -q ^'-';then
            echo "Will delete those file : �[31m$(echo $@ | cut -d ' ' -f 2-)�[0m forcely !"
            resp="y"
        else
            read -p "Will delete those file : �[31m$@�[0m, right ? [Y|y]|[N|n] > " resp
        fi
        case ${resp} in
            "Y"|"y")
                true
                ;;
            *)
                return
                ;;
        esac
        
        if echo $1 | grep -q ^'-';then
            file_num=$(echo $@ | cut -d ' ' -f 2- | wc -w)
            flag=0
            for file in $(echo $@ | cut -d ' ' -f 2-)
            do
                if [ -e /tmp/${curr_date}/${file} ];then
                    mv -f ${file} /tmp/${curr_date}/${file}_$(date +%s)
                    if [ $? -eq 0 ];then
                        let flag+=1
                    fi
                else
                    mv -f ${file} /tmp/${curr_date}
                    if [ $? -eq 0 ];then
                        let flag+=1
                    fi
                fi  
            done
        else
            file_num=$(echo $@ | wc -w)
            flag=0
            for file in $(echo $@)
            do
                if [ -e /tmp/${curr_date}/${file} ];then
                    mv -f ${file} /tmp/${curr_date}/${file}_$(date +%s)
                    if [ $? -eq 0 ];then
                        let flag+=1
                    fi
                else
                    mv -f ${file} /tmp/${curr_date}
                    if [ $? -eq 0 ];then
                        let flag+=1
                    fi
                fi  
            done
        fi
        if [ ${flag} -eq ${file_num} ];then
            echo "�[32mSuccessfully�[0m !"
        else
            echo "�[31mBUG - Unsuccessfully, [${flag}/${file_num} finished !]�[0m !"
        fi
    }
    alias rm='rm_mv'
    

    定义一个新的函数alias到原来的系统命令rm。当执行rm文件的时候会提示用户确认删除,删除成功会有返回。同时rm -fr还是可以用的,只是不会提示用户确认。遇到删除相同的文件名的时候,会在文件名后+日期备份。每天会按照日期在/tmp下生成备份文件夹。

    注意,由于markdown无法正确地显示部分字符code中的是CTRL+v+ESC组合键出来的, UTF-8是<0x1b>

    /tmp下备份状态:

    文件备份

    删除的时候:

    删除操作

    推荐关注博主公众号,获取最新的文章😀

    服务器测试与运维

    📌转载请注明来源,版权归作者@hualong1009所有, 谢谢

    相关文章

      网友评论

          本文标题:Linux OS下替换`rm`为`mv`, 防止文件误删

          本文链接:https://www.haomeiwen.com/subject/xranrctx.html