Centos实现回收站机制

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

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

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

1 [[email protected] 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的内容:

 1 [[email protected] Trash_1.0]# cat Trash_mkdir.sh
 2 #!/bin/bash
 3 month=`date "+%m"`              #获取当前月份
 4 day=`date "+%d"`               #获取当前日期 
 5
 6 last_day=`date -d "-1 day" "+%d"`      #获取前天月份
 7 last_day_m=`date -d "-1 day" "+%m"`       #获取前天日期
 8
 9 del_day=`date -d "-5 day" "+%d"`      #获取五天前月份
10 del_day_m=`date -d "-5 day" "+%m"`      #获取五天前日期
11
12 Trash_dir="/tmp/del_bak"          #回收站总目录
13 tmp_dir="/tmp/del_bak/tmp"          #每天删除文件存放目录
14 #下面是创建相应目录,并赋予777权限15 if [ ! -d $Trash_dir ]
16 then
17     /bin/mkdir -p $Trash_dir
18     /bin/chmod 777 $Trash_dir
19 fi
20
21 if [ ! -d $tmp_dir ]
22 then
23     /bin/mkdir -p $tmp_dir
24     /bin/chmod 777 $tmp_dir
25 fi
26
27 if [ ! -d /tmp/del_bak/$month ]
28 then
29     /bin/mkdir /tmp/del_bak/$month
30     /bin/chmod 777 /tmp/del_bak/$month
31 fi
32
33 if [ ! -d /tmp/del_bak/$month/$day ]
34 then
35     /bin/mkdir /tmp/del_bak/$month/$day
36     /bin/chmod 777 /tmp/del_bak/$month/$day
37 fi
38
39 Trash_file=`/bin/ls -A $tmp_dir`
40
41 if [ "$Trash_file" != "" ]            #这是定时在每天凌晨将昨天删除的文件放到已月份和日期分类的目录下,保证/tmp/del_bak/tmp目录下只存放当天删除的文件
42 then
43     cd $tmp_dir
44     if [ ! -d /tmp/del_bak/$last_day_m/$last_day/ ]
45     then
46        /bin/mkdir -p /tmp/del_bak/$last_day_m/$last_day/
47     fi
48     /bin/mv $tmp_dir/* /tmp/del_bak/$last_day_m/$last_day/
49 fi
50
51 if [ -d $Trash_dir/$del_day_m/$del_day/ ]        #清理五天前删除的文件
52 then
53     cd $Trash_dir/$del_day_m/$del_day/ && {
54     /bin/rm -rf $Trash_dir/$del_day_m/$del_day/
55     }
56 fi

  install_Trash.sh脚本内容:

 1 [[email protected] Trash_1.0]# cat install_Trash.sh
 2 #!/bin/bash
 3 USER=`/usr/bin/whoami`                          #获取当前用户
 4 TOOLS="/usr/local/tools"                          #存放Trash_mkdir.sh定时任务脚本的路径,可根据个人自行修改
 5 HOME_DIR=`/bin/grep "$USER" /etc/passwd|awk -F ":" ‘{print $6}‘`  #获取当前用户家目录
 6 CONF=$HOME_DIR"/.bashrc"                          #拼接当前用户的配置文件路径
 7 Trash=`/bin/grep "del" $CONF`                      #判断是否已经配置了回收站机制
 8
 9 if [ "$Trash" = "" ]                            #添加回收站别名del
10 then
11     echo "alias del=‘mv -t /tmp/del_bak/tmp/ --backup=t‘" >>$CONF
12 fi
13
14 if [ ! -d $TOOLS ]
15 then
16     /bin/mkdir -p $TOOLS
17 fi
18
19 /bin/cp Trash_mkdir.sh $TOOLS                      #拷贝定时任务脚本到指定目录
20 /bin/chmod +x $TOOLS/Trash_mkdir.sh
21
22 if [ -z "`grep ‘Trash_mkdir.sh‘ /var/spool/cron/root`" ]      #判断定时任务crontab里是否已经加了回收站脚本
23 then
24     echo "10 0 * * * $TOOLS/Trash_mkdir.sh" >>/var/spool/cron/root
25 fi
26
27 /bin/sh $TOOLS/Trash_mkdir.sh                      #初始化回收站

部署说明:

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

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

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

时间: 2024-10-10 15:37:32

Centos实现回收站机制的相关文章

ORACLE回收站机制介绍

回收站概念 从ORACLE 10g开始,引入了一个叫回收站(Recycle Bin)的概念.它的全称叫Tablespace Recycle Bin.回收站实际是一个逻辑容器(逻辑区域),原理有点类似于WINDOW系统的回收站.它以表空间中现有已经分配的空间为基础,而不是从表空间上物理划出一个固定区域用作回收站.这意味着回收站和表空间中的对象共用存储区域.系统没有给回收站预留空间.因此,当表被DROP后,如果可用空间充足,并且没有对回收站进行清理,那么被DROP掉的对象会一直存在回收站中,但是如果

ORACLE回收站机制介绍及管理

ORACLE回收站机制介绍 从ORACLE 10g开始,引入了一个叫回收站(RecycleBin)的概念.它的全称叫Tablespace Recycle Bin.回收站实际是一个逻辑容器(逻辑区域),原理有点类似于WINDOW系统的回收站.它以表空间中现有已经分配的空间为基础,而不是从表空间上物理划出一个固定区域用作回收站.这意味着回收站和表空间中的对象共用存储区域.系统没有给回收站预留空间.因此,当表被DROP后,如果可用空间充足,并且没有对回收站进行清理,那么被DROP掉的对象会一直存在回收

centos rm 回收站

桌面版本的linux就默认有,非桌面版本貌似没(反正我没找到) linux rm删除文件之后,恢复就比较麻烦了,即使恢复了,文件名格式都变成一串数字了. 修改root用户的环境变量 vi ~/.bashrc 注释第5行的别名 #alias rm='rm -i' 最后一行添加如下内容 mkdir -p ~/.trash alias rm=trash alias r=trash alias rl='ls ~/.trash' alias ur=undelfile undelfile() { mv -i

centos rm回收站

linux rm删除文件之后,恢复就比较麻烦了,即使恢复了,文件名格式都变成一串数字了. 修改root用户的环境变量 vi ~/.bashrc 注释第5行的别名 #alias rm='rm -i' 最后一行添加如下内容 mkdir -p ~/.trash alias rm=trash alias r=trash alias rl='ls ~/.trash' alias ur=undelfile undelfile() { mv -i ~/.trash/[email protected] ./ }

【hadoop 2.6】hdfs如何打开回收站机制trash,恢复删除的文件

在hdfs中,默认的文件删除保留的时间是0,也就是没有保留删除的文件,删除即丢失 那么如果你想启用hdfs的回收站机制,在删除文件后,希望多久之后,文件才消失,因为这个过程中万一你想来恢复文件呢 <property> <name>fs.trash.interval</name> <value>1440</value> </property> 将以上配置添加到core-site.xml中即可,1440表示删除的文件保存1440分钟,在这

centos建立回收站

linux下的回收站在每一个当前用户目录./local/share/Trash中. 也可以给linux添加一个回收站. mkdir /tmp/trash_tmp 建立一个回收站目录 vi /bin/trash 编辑一个文件 mv [email protected] /tmp/trash_tmp :wq 保存退出 alias rm=/bin/trash添加别名 vi /etc/bashrc 在最后一行添加alias rm=/bin/trash chmod 755 /bin/trash chmod

linux中的回收站机制,防止rm -rf 事件

下文中的配置文件:config.txtmkdir -p ~/.trashalias rm=deldel(){ mv [email protected] ~/.trash/ if [ $? -ne 0 ];then echo -e "\033[31mPlease refer to the error:\033[0m\nmv is rm alias. Please use command:\033[31m rm filename \033[0m or \033[31m rm dirname \033

Sharepoint 2013 回收站知识整理

回收站机制可有利于防止内容的永久删除与误删除. 一.SharePoint 2013 回收站包括两种:第一回收站(End user Recycle Bin items)与 第二回收站(Deleted from end user Recycle Bin). 二.SharePoint 2013 回收站配置: 1.确认执行此过程的用户帐户是 SharePoint 组“Farm Administrators”的成员. 2.在 SharePoint 管理中心网站上,单击“应用程序管理(Application

linux下建立回收站防止误删除及定期清空

功能描述: 我们都知道linux不同于windows的一点是Windows有回收站机制,这样如果我们想将之前删掉的一个文件还原直接到回收站里就可以实现,这给了我们一次反悔的机会.所以我考虑在我的linux上也加入这个功能,来防止"rm -rf"造成的误删除导致数据丢失. 我现在通过脚本来实现这个回收站机制.rm脚本实现的是删除,替换了原系统中的rm,将删除的文件都回收到了用户家目录下的一个叫./recycle的目录里了,到时只要在这个目录里找回就可以啦,注意rm删除的东西都被真的删除,