CentOS实现回收站机制

作为一个运维人员,在服务器上删除文件时为了方便经常会直接使用rm *.txt这类通配符,甚至为了省事加-rf参数,如果是确定的话还好,要是在删除的时候一个不留神,那事可就大了。

俗话说常在河边站哪有不湿鞋,没人能保证自己就能一次失误都不犯,但天天提心吊胆的整成个强迫症也不是事,所以就想到了在Linux服务器上也整一个类似Win的回收站功能。

以下是本人实现回收站的脚本,在启用回收站后如果需要删除文件,只需执行”del 文件名/文件夹名称”即可

1 [root@localhost tools]# tree Trash_1.0/
2 Trash_1.0/
3├── install_Trash.sh
4 └── Trash_mkdir.sh

很简单,就两个脚本文件,Trash_mkdir.sh是写到crontab定时任务里的内容,负责每天生成对应日期的回收站文件夹,并定期清理回收站内超过5天的文件,也就是说回收站能保留你五天内删除的文件,install_Trash.sh脚本负责自动配置定时任务、加载用户个性化配置等。

Trash_mkdir.sh的内容:

[root@localhost Trash_1.0]# cat Trash_mkdir.sh
#!/bin/bash
month=`date “+%m”`              #获取当前月份
day=`date “+%d”`               #获取当前日期 

last_day=`date -d “-1 day” “+%d”`      #获取前天月份
last_day_m=`date -d “-1 day” “+%m”`       #获取前天日期

del_day=`date -d “-5 day” “+%d”`      #获取五天前月份
del_day_m=`date -d “-5 day” “+%m”`      #获取五天前日期

Trash_dir=”/tmp/del_bak”          #回收站总目录
tmp_dir=”/tmp/del_bak/tmp”          #每天删除文件存放目录
#下面是创建相应目录,并赋予777权限15 if [ ! -d $Trash_dir ]
then
    /bin/mkdir -p $Trash_dir
    /bin/chmod 777 $Trash_dir
fi

if [ ! -d $tmp_dir ]
then
    /bin/mkdir -p $tmp_dir
    /bin/chmod 777 $tmp_dir
fi

if [ ! -d /tmp/del_bak/$month ]
then
    /bin/mkdir /tmp/del_bak/$month
    /bin/chmod 777 /tmp/del_bak/$month
fi

if [ ! -d /tmp/del_bak/$month/$day ]
then
    /bin/mkdir /tmp/del_bak/$month/$day
    /bin/chmod 777 /tmp/del_bak/$month/$day
fi

Trash_file=`/bin/ls -A $tmp_dir`

if [ “$Trash_file” != “” ]            #这是定时在每天凌晨将昨天删除的文件放到已月份和日期分类的目录下,保证/tmp/del_bak/tmp目录下只存放当天删除的文件
then
    cd $tmp_dir
    if [ ! -d /tmp/del_bak/$last_day_m/$last_day/ ]
    then
      /bin/mkdir -p /tmp/del_bak/$last_day_m/$last_day/
    fi
    /bin/mv $tmp_dir/* /tmp/del_bak/$last_day_m/$last_day/
fi

if [ -d $Trash_dir/$del_day_m/$del_day/ ]        #清理五天前删除的文件
then
    cd $Trash_dir/$del_day_m/$del_day/ && {
    /bin/rm -rf $Trash_dir/$del_day_m/$del_day/
    }
fi

install_Trash.sh脚本内容

[root@localhost Trash_1.0]# cat install_Trash.sh
#!/bin/bash
USER=`/usr/bin/whoami`                          #获取当前用户
TOOLS=”/usr/local/tools”                          #存放Trash_mkdir.sh定时任务脚本的路径,可根据个人自行修改
HOME_DIR=`/bin/grep “$USER” /etc/passwd|awk -F “:” ‘{print $6}’`  #获取当前用户家目录
CONF=$HOME_DIR”/.bashrc”                          #拼接当前用户的配置文件路径
Trash=`/bin/grep “del” $CONF`                      #判断是否已经配置了回收站机制

if [ “$Trash” = “” ]                            #添加回收站别名del
then
    echo “alias del=’mv -t /tmp/del_bak/tmp/ –backup=t'” >>$CONF
fi

if [ ! -d $TOOLS ]
then
    /bin/mkdir -p $TOOLS
fi

/bin/cp Trash_mkdir.sh $TOOLS                      #拷贝定时任务脚本到指定目录
/bin/chmod +x $TOOLS/Trash_mkdir.sh

if [ -z “`grep ‘Trash_mkdir.sh’ /var/spool/cron/root`” ]      #判断定时任务crontab里是否已经加了回收站脚本
then
    echo “10 0 * * * $TOOLS/Trash_mkdir.sh” >>/var/spool/cron/root
fi

/bin/sh $TOOLS/Trash_mkdir.sh                      #初始化回收站

部署说明:

1、将两个脚本放在同一目录下

2、使用需要启用回收站功能的用户去执行install_Trash.sh脚本即可一键安装

以上就是本人在CentOS6.5服务器上实现的回收站机制,有兴趣的朋友可以一起讨论改进。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/223200.html<

(0)
运维的头像运维
上一篇2025-04-15 20:42
下一篇 2025-04-15 20:43

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注