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

2019-07-30  本文已影响0人  hualong1009

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所有, 谢谢

上一篇下一篇

猜你喜欢

热点阅读