当前位置: 首页 > article >正文

Linux增加回收站功能

功能简介

rm命令是非常危险的命令,为了防止用户误删文件,所以我们在执行rm命令时将文件添加到回收站,防止误删文件。

相关环境变量
名称描述
TRASH_DIR

回收站目录,默认为/Recycle_Bin

文件命名规则

文件名生成格式为  原始文件名_删除时间

例如:test.txt-20240223192209

操作步骤

1. 编写脚本,使其登录后执行

在 profile.d文件夹中创建脚本文件

##进入profile.d文件夹
cd /etc/profile.d
## 创建并编写
vi trash.sh
## 修改脚本权限
chmod 755 loginRecord.sh
## 创建回收站根目录
mkdir /Recycle_Bin
chmod 777 /var/log/history
chattr +a /Recycle_Bin

LoginRecord.sh 脚本文件内容

# 功能:修改rm命令将文件删除至指定文件夹(回收站)
export TRASH_DIR=/Recycle_Bin
trash(){
    del_date=`date +%Y%m%d%H%M%S`
    # 循环是因为可能rm多个文件
    for arg in "$@"
    do
        # 这里将删除时间加入到文件名后是因为mv命令不能覆盖非空目录以及不能使用文件覆盖文件夹
        # 加上时间就不会有同名的文件了
        if [ "-f" = "$arg" ] || [ "-rf" = "$arg" ] || [ "-fr" = "$arg" ];then
        {
                ## 跳过用户输入参数
                continue
        }
        fi
        if [ -e $arg ];then    ## 文件或目录存在才删除
        {
            ## 删文件
            if [ -f $arg ];then
            {
                    ## 获取文件名
                    filename=${arg##*/} 
                    mv $arg ${TRASH_DIR}/$filename-${del_date}
            }
            else
            {      
                    ## 获取目录全名,删除掉最后一个/及其右边的字符串
                    arg=${arg%/*}
                    ## 获取目录名,删除最后一个/及其左边的字符串
                    dirname=${arg##*/}
                    mv $arg ${TRASH_DIR}/$dirname-${del_date}
            }
            fi
        }
        else
       {
            echo "[err] No such file or directory!!!"
            continue
       }
    fi
    done
}
 
alias rm=trash
alias rl="ls ${TRASH_DIR}" #${TRASH_DIR} /Recycle_Bin

2. 更改root账户配置

注释掉自带的rm环境变量

# 找到root用户下~/.bashrc 文件,注释rm环境变量如下

#alias rm='rm -i'

编写自动清理文件脚本autoclean.sh

DAY=+7
find $TRASH_DIR -mtime $DAY -maxdepth 1 -exec chattr -a {} \
find $TRASH_DIR -mtime $DAY -maxdepth 1 -exec /usr/bin/rm -rf {} \

添加定时任务

0 0 * * * /etc/profile.d/autoclean.sh


http://www.kler.cn/a/455554.html

相关文章:

  • springcloud篇1(微服务技术栈、服务拆分与远程调用、Eureka、Nacos)
  • 【前端】整理部分语法 支持的最低版本浏览器
  • 从 x86 到 ARM64:CPU 架构的进化与未来
  • Java开发框架大比拼:若依、Jeesite与jeecgBoot的深度对比与实战案例分析
  • 助你通过AI培训师中级考试的目录索引
  • 【ANGULAR网站开发】初始环境搭建
  • Chromium GN 目标指南 - view_example 表单示例 (八)
  • elasticsearch安全认证
  • R 和 Origin 完成细菌 OTU 表、土壤理化性质数据的微生物 Beta 多样性分析
  • 多因子模型连载
  • 零信任安全体系研究
  • 抖音生活服务商系统源码怎么搭建?
  • gesp(二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵
  • 面试场景题系列:设计限流器
  • elementUI——upload限制图片或者文件只能上传一个——公开版
  • 新浪微博大数据面试题及参考答案(数据开发和数据分析)
  • 加强版第十七章空间色彩转换
  • 水电站视频智能监控系统方案设计与技术应用方案
  • 高频生活场景带动低频金融服务,美团企业版点燃场景金融建设引擎
  • Network Slice | Android 网络切片流程简介和日志分析