linux 回收站创建

1、创建回收站

#/root/.trash路径,即作为我们的回收站路径当然,这里要注意你分区空间的情况,这个回收站位置,生产环境尽量放在空间较大的分区下
cd ~ && mkdir .trash

2、重写rm命令

#当前用户生效 修改你的 home 目录下的
vim ~/.bashrc

#全局系统生效  在修改之前最好先备份
cp /etc/bashrc /etc/bashrc.bak
vim /etc/bashrc

3、重写rm完整脚本

# rm transform
function rm() {
    # 创建回收站目录
    # 如果目录不存在,就创建这个目录
    if [ ! -d ~/.trash ]; then
        mkdir -p ~/.trash
    fi

    # 定期清理回收站,时间可调整
    now=$(date +%s)
    for s in ~/.trash/*; do
        dir_name=$(basename "$s")
        dir_time=$(date +%s -d "${dir_name//_/-}")
        
        # if bigger than one month then delete
        # 2592000 秒 60*60*24*30 删除一个月前的文件
        # 60秒 × 60分钟 × 24小时 × 7天 = 604800秒,这是一周的总秒数。
        if [[ "$dir_time" != "0" && $((now - dir_time)) -gt 604800 ]]; then
            echo "Trash $dir_name has been cleaned."
            /bin/rm "$s" -rf
        fi
    done

    # 重写rm命令,将文件mv到回收站下
    prefix=$(date +%Y_%m_%d)
    hour=$(date +%H)
    mkdir -p ~/.trash/"$prefix"/"$hour"
    
    if [[ -z $1 ]]; then
        echo 'Missing Args'
        return
    fi
    
    echo "${!#} 已被移到回收站"
    mv -b "${!#}" ~/.trash/"$prefix"/"$hour"
}

4、生效配置

#回收站定期删除因为我们上面的 shell 每次触发 rm 命令的时候都会去删除一个月前的目录,所以就不需要定时器来删除 .trash 里面的文件了
source ~/.bashrc

source /etc/bashrc

5、测试

#创建删除文件
cd /
mkdir test
rm -rf test/
test/ 已被移到回收站

#查看回收站
cd /root/.trash/2022_07_05/15
[root@aly 15]# pwd
/root/.trash/2022_07_05/15
[root@aly 15]# ls
test  test.sh

6、真实删除命令

#如果强制清空"回收站"(即清空 .trash 目录),
可以使用真正的 rm 命令:/bin/rm -rf ~/.trash/*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值