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

Posted bazingafraser

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下防止rm误操作建立回收站相关的知识,希望对你有一定的参考价值。

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、创建回收站目录

[[email protected] shell]# mkdir /data/backup/.zc_trash

3、添加环境变量

[[email protected] shell]# vim ~/.bashrc

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

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

4、环境变量生效

[[email protected] ~]# source ~/.bashrc

5、测试

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

[[email protected] ~]# touch cc

[[email protected] ~]# rm -f cc

dirname:无效选项 -- f

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

basename:无效选项 -- f

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

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

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

[[email protected] ~]#

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

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

[[email protected] shell]# cd /data/backup/.zc_trash/

[[email protected] .zc_trash]# ls

2018-02-01

[[email protected] .zc_trash]#

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

[[email protected] .zc_trash]# cd 2018-02-01/

[[email protected] 2018-02-01]# ls

1517462127

[[email protected] 2018-02-01]#

我们使用unxi解码工具

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

2018-02-01 13:15:27

[[email protected] 2018-02-01]#

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

[[email protected] 2018-02-01]# cd 1517462127/

[[email protected] 1517462127]# ls

1517462127.log  cc

[[email protected] 1517462127]#

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

[[email protected] 1517462127]# cat 1517462127.log

rm /

rm ./cc

[[email protected] 1517462127]#

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

 

以上是关于Linux下防止rm误操作建立回收站的主要内容,如果未能解决你的问题,请参考以下文章

为啥Linux的命令 rm 没有回收站呢?

Linux系统防止误删除文件

Centos7做回收站功能,防止误删除

Linux下禁用rm命令之建立回收站 𫌡

Linux下禁用rm命令之建立回收站 񮜞

Linux下禁用rm命令之建立回收站 𑯄