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时间为目录

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

时间: 2024-07-30 20:09:25

Linux下防止rm误操作建立回收站的相关文章

【Linux下禁用rm命令之建立回收站】 -- 2019-08-08 18:02:13

原文: http://106.13.73.98/__/86/ 第一步 创建回收站目录 # 根据自己的习惯,找个位置创建一个用作回收文件的目录 # 我们这里将在root目录下面创建一个名为".trash"的隐藏文件 [[email protected] ~]# mkdir .trash 第二步 创建回收站脚本文件 # 同样是根据自己的习惯找个位置创建 [[email protected] ~]# vim .remove.sh 打开后在文件内写入如下代码: # 指定第一步骤中创建的回收站目

【Linux下禁用rm命令之建立回收站】 -- 2019-08-11 19:13:54

原文: http://106.13.73.98/__/86/ 第一步 创建回收站目录 # 根据自己的习惯,找个位置创建一个用作回收文件的目录 # 我们这里将在root目录下面创建一个名为".trash"的隐藏文件 [[email protected] ~]# mkdir .trash 第二步 创建回收站脚本文件 # 同样是根据自己的习惯找个位置创建 [[email protected] ~]# vim .remove.sh 打开后在文件内写入如下代码: # 指定第一步骤中创建的回收站目

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

原文: http://blog.gqylpy.com/gqy/311 "> ###### 第一步 创建回收站目录 # 根据自己的习惯,找个位置创建一个用作回收文件的目录 # 我们这里将在root目录下面创建一个名为".trash"的隐藏文件 [[email protected] ~]# mkdir .trash 第二步 创建回收站脚本文件 # 同样是根据自己的习惯找个位置创建 [[email protected] ~]# vim .remove.sh 打开后在文件内写入

将linux下的rm命令改造成移动文件至回收站【转】

转自:http://blog.csdn.net/a3470194/article/details/16863803 [-] 将linux下的rm命令改造成移动文件至回收站 将AIX下的rm命令改造成移动文件至回收站 将linux下的rm命令改造成移动文件至回收站 rm是Linux下文件删除的命令,它是Linux下非常强大却又非常危险的一条命令,特别是rm -rf有时候强大到让你欲哭无泪,当你想清除当前目录下的所有文件和目录时,很简单 #rm -rf ./* 这没什么,但是,但是如果不小心打成这样

linux下修改rm命令防止误删除

前言:相信很多朋友都遇到过在linux下用rm命令误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾.那么怎么防止这种情况发生呢?当然是有方法的,我们可以写一个shell脚本,改变一下rm命令的作用. 第一步: 先在home目录下创建一个叫username名字的目录(当然名字可以自定义),具体命令为:sudo mkdir username(自定义的名字) 这时候记得要用命令:sudo chmod 777 username(自定义的名字)来改变一下你的目录权限,因为在home目录下刚创建的目录是没

Linux下的目录扫描操作函数使用实践

[文章摘要] 本文以实际的C源程序为例子,介绍了Linux下的目录扫描函数(scandir)的使用方法,为相关开发工作的开展提供了有益的参考. [关键词] C语言  Linux  目录扫描  makefile  scandir 一.scandir命令简介 scandir函数的声明为: int scandir(const char *dir, structdirent ***namelist, int (*filter) (const void *b), int ( * compare )( co

linux下文件的读写操作(openreadwrite)

linux下文件的读写操作(openreadwrite) 转 http://www.2cto.com/os/201403/285837.html open(打开文件) 相关函数 read,write,fcntl,close,link,stat,umask,unlink,fopen 表头文件 #include<sys/types.h>#include<sys/stat.h>#include<fcntl.h> 定义函数 int open( const char * path

Linux下通过rm -f删除大量文件时提示&quot;-bash: /bin/rm: Argument list too long&quot;的解决方法

Linux下通过rm -f删除/var/spool/postfix/maildrop/中大量的小文件时提示: "-bash: /bin/rm: Argument list too long" 如图: 通过ls /var/spool/postfix/maildrop/*|wc -l 发现文件数达到21万多,见附件: 原因:rm -f的参数过多 解决方法:可使用awk一次删除一个的方式进行删除,但必须先进入该目录下,操作方法如下:1.先进入该目录下:cd /var/spool/postfi

windows和linux下结束循环的操作

#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string word; string line; while (getline(cin,line)) { istringstream istr(line); while(istr>>word) cout<<word<<"#"; cou