linux rm -rf 乱码,Linux之rm -rf安全删除

新建自定义删除脚本:

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/

操作效果:

307a1b4278d4?spm=a2c4e.11153940.blogcont703110.15.5d016dcb0F96iJ

image.png

FAQ:

1,安全删除测试不成功?

排查是否与本文操作一致,同时查看是否有mv目标文件或目录的linux权限。

2,如何清理回收站?

直接\rm -rf xxx (加个反斜杠)就可以使用linux原生rm命令了。

3,定时清理回收站?

自己建立个crontab任务咯~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值