码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下防止rm误操作建立回收站

时间:2018-02-28 16:32:00      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:dir   .bashrc   cat   trash   vim   roo   删除   ack   fun   

1、将下面脚本添加到某个目录下(例如/data/shell下)

脚本名称:rm-remove.sh

脚本内容:

#!/usr/bin/env bash

# func: 安全:rm的替换方法

# Time: 2018/2/1

# editor: yw

# --------------------

 

PARA_CNT=$#

TRASH_DIR="/data/backup/.zc_trash"

DATE=`date +%F`

TRASH_DIR_D=${TRASH_DIR}/${DATE}

if [ ! -d ${TRASH_DIR_D} ] ;then

    mkdir -p ${TRASH_DIR_D}

fi

 

for i in $*

do

    STAMP=`date +%s`

    if [ ! -d ${TRASH_DIR_D}/${STAMP} ] ;then

        mkdir -p ${TRASH_DIR_D}/${STAMP}

    fi

    pwdname=`dirname ${i}`

    filename=`basename ${i}`

    mv ${i} ${TRASH_DIR_D}/${STAMP}/

    echo "rm ${pwdname}/${filename}" >> ${TRASH_DIR_D}/${STAMP}/${STAMP}.log

 

done

2、创建回收站目录

[root@test shell]# mkdir /data/backup/.zc_trash

3、添加环境变量

[root@test shell]# vim ~/.bashrc

在alias的最后一行添加脚本执行方式

alias rm="sh /data/shell/rm-remove.sh"

4、环境变量生效

[root@test ~]# source ~/.bashrc

5、测试

在任何目录下新建一个文件或者目录执行rm删除操作会报错

[root@test ~]# touch cc

[root@test ~]# rm -f cc

dirname:无效选项 -- f

请尝试执行"dirname --help"来获取更多信息。

basename:无效选项 -- f

请尝试执行"basename --help"来获取更多信息。

mv: 在"/data/backup/.zc_trash/2018-02-01/1517462127/" 后缺少了要操作的目标文件

请尝试执行"mv --help"来获取更多信息。

[root@test ~]#

我们执行了rm操作之后发现当前目录下确实cc文件已经不存在了,但是我们只是对该文件做了mv 的操作,并没有真的删除,

6、切换到回收站目录下查看

[root@test shell]# cd /data/backup/.zc_trash/

[root@test .zc_trash]# ls

2018-02-01

[root@test .zc_trash]#

我们可以看到当前目录下有一个时间目录,进入之后会看到一个unix时间为名称的目录

[root@test .zc_trash]# cd 2018-02-01/

[root@test 2018-02-01]# ls

1517462127

[root@test 2018-02-01]#

我们使用unxi解码工具

[root@test 2018-02-01]# date -d @1517462127 +"%Y-%m-%d %H:%M:%S"

2018-02-01 13:15:27

[root@test 2018-02-01]#

进入这个目录之后看到一个log文件和我们刚才rm的cc文件

[root@test 2018-02-01]# cd 1517462127/

[root@test 1517462127]# ls

1517462127.log  cc

[root@test 1517462127]#

查看日志内容为我们刚才执行的rm操作命令

[root@test 1517462127]# cat 1517462127.log

rm /

rm ./cc

[root@test 1517462127]#

7、综上:我们做了以上限制之后,删除的东西会mv到这个回收站目录下并且会以unix时间为目录

 

Linux下防止rm误操作建立回收站

标签:dir   .bashrc   cat   trash   vim   roo   删除   ack   fun   

原文地址:https://www.cnblogs.com/bazingafraser/p/8483731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!