Linux之rm -rf 安全删除

简介: 新建自定义删除脚本:vim /usr/bin/safe_remove !/bin/bash TRASH_DIR="/tmp/user/${USER}/.trash"mkdir -p $TRASH_DIR RMPATH="" 遍历rm命令参数(e.

参考本人简书

新建自定义删除脚本:

vim /usr/bin/safe_remove
#!/bin/bash

TRASH_DIR="/tmp/user/${USER}/.trash"
mkdir -p $TRASH_DIR

RMPATH=""
# 遍历rm命令参数(e.g. rm -rf时要去掉-rf参数,只需后面的path列表即可)
for arg in "$@"
do
  IS_ARG=$(echo "$arg" | grep "^-")
  if [ -z "$IS_ARG" ]; then
    if [ -n "$RMPATH" ]; then
      RMPATH="${RMPATH} "
    fi
    RMPATH="${RMPATH} $arg"
  fi
done

if [ -n "$RMPATH" ]; then
  FILE_PARENT_DIR=$(pwd $RMPATH)
  SUFFIX=$(echo `date "+%y%m%d%H%M%S"`)

  # 拼接欲删除文件的目录,在回收站中的目录名称(直接将目标文件或目录的父目录作为在回收站的名称,这样做好处是无论删除的是文件或目录都可统一处理)
  FILE_TRASH_DIR="${TRASH_DIR}${FILE_PARENT_DIR}.children.rm.${SUFFIX}.tmp"

  if [ ! -d "$FILE_TRASH_DIR" ]; then
    mkdir -p $FILE_TRASH_DIR
  fi
  mv $RMPATH "${FILE_TRASH_DIR}"
fi

配置安全删除脚本生效

vim /root/.bashrc

新增一行即可:

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# 安全rm
alias rm='sh /usr/bin/safe_remove'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

使其生效

. /root/.bashrc

效果测试

生成测试文件和目录
useradd testing
cd /home/testing
echo 111 > a.txt
echo 222 > b.txt
mkdir -p log
echo 333 > log/test.log
rm删除
rm -rf a.txt b.txt log
查看回收站
ll /tmp/user/root/.trash/home/testing.children.rm.190521102654.tmp/

操作效果:
image.png

FAQ:
1,安全删除测试不成功?
排查是否与本文操作一致,同时查看是否有mv目标文件或目录的linux权限。
2,如何清理回收站?
直接\rm -rf xxx (加个反斜杠)就可以使用linux原生rm命令了。
3,定时清理回收站?
自己建立个crontab任务咯~!

目录
相关文章
|
2月前
|
Shell Linux C语言
【Shell 命令集合 文件管理】Linux 删除 rm命令使用指南
【Shell 命令集合 文件管理】Linux 删除 rm命令使用指南
49 0
|
4月前
|
安全 Linux
Linux命令之rm
Linux命令之rm
38 4
|
5月前
|
Linux
linux(十三)文件和目录相关命令rm
linux(十三)文件和目录相关命令rm
38 0
|
6月前
|
Linux
Linux rm命令:删除文件或目录
当 Linux 系统使用很长时间之后,可能会有一些已经没用的文件(即垃圾),这些文件不但会消耗宝贵的硬盘资源,还是降低系统的运行效率,因此需要及时地清理。 rm 是强大的删除命令,它可以永久性地删除文件系统中指定的文件或目录。在使用 rm 命令删除文件或目录时,系统不会产生任何提示信息。此命令的基本格式为: [root@localhost ~]# rm[选项] 文件或目录 -f:强制删除(force),和 -i 选项相反,使用 -f,系统将不再询问,而是直接删除目标文件或目录。 -i:和 -f 正好相反,在删除文件或目录之前,系统会给出提示信息,使用 -i 可以有效防止不小心删除有用的
136 1
|
7月前
|
运维 安全 Linux
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
|
5月前
|
安全 关系型数据库 MySQL
Linux 实用小脚本系列(2)----mysql安全初始化脚本的免交互执行--mysql_secure_installation
Linux 实用小脚本系列(2)----mysql安全初始化脚本的免交互执行--mysql_secure_installation
58 0
|
13天前
|
监控 安全 Linux
【专栏】Linux SSH 的安全对于远程管理至关重要,这几个小妙招安排上!
【4月更文挑战第28天】在数字化时代,Linux SSH 的安全对于远程管理至关重要。增强 SSH 安全包括:使用强密码,调整 SSH 配置文件,尤其是端口号和认证方式;采用密钥认证代替密码;限制登录用户,禁止密码登录;使用防火墙限制访问;定期更新系统和软件。此外,通过日志监控、入侵检测系统及及时应对攻击来提升安全监控。保持对安全知识的学习和更新,结合最佳实践,是保障 SSH 安全的关键。记得安全是个持续过程,时刻保持警惕!
|
3月前
|
安全 网络协议 Linux
Linux系统管理、服务器设置、安全、云数据中心
Linux系统管理、服务器设置、安全、云数据中心
|
13天前
|
安全 Linux 网络安全
【专栏】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患,教你一招找出所有开放的端口,然后直接干掉!
【4月更文挑战第28天】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患。要找出开放端口,可使用 `netstat -anp`、`lsof -i` 或 `nmap` 命令。关闭端口可通过停止相关服务、修改防火墙规则或禁用网络接口。注意不要随意关闭重要端口,操作前备份数据。保持端口安全对系统安全至关重要。
|
13天前
|
监控 安全 Linux
【专栏】在网络安全至关重要的今天,Linux系统中的SCP和SFTP成为安全文件传输的首选工具
【4月更文挑战第28天】在网络安全至关重要的今天,Linux系统中的SCP和SFTP成为安全文件传输的首选工具。SCP,一个基于SSH的轻量级工具,允许用户方便地在本地和远程主机间复制文件。要使用SCP,首先确保安装了OpenSSH,然后通过基本命令进行文件传输,如`scp source destination`。SFTP则提供了一个类似FTP的界面,通过`sftp`命令启动客户端,进行直观的文件操作。两者均基于SSH协议,保证数据加密。为确保安全,建议使用强密码、密钥对、禁用根用户直接登录,并配置防火墙及监控日志。了解和掌握这些工具能提升工作效率并保护数据安全。