Linux文件回收机制:安全删除文件不怕误删

Linux文件回收机制:安全删除文件不怕误删

文章目录


在 Linux 的世界里,"删除"可不等于"彻底消失",就像你在桌面上删了文件,它并没有灰飞烟灭,而是悄悄躲进了"回收站"------只不过这个"回收站",你得自己搭。

今天我们来聊聊 Linux 的文件回收机制,也就是:

文件被删掉后,是直接打入地狱,还是有机会重返人间?

一、Linux默认没有"回收站"?

是的,Linux 可不像 Windows 那样贴心,默认直接执行 rm 命令就像泰山压顶------该文件当场升天,魂飞魄散。所以,误删文件在 Linux 下几乎等同于灾难。

不过别急,"没有回收站"不代表没有补救的办法!

二、打造你自己的Linux回收站

1. 建立回收站目录

如果 /trash 目录不存在就创建它,并赋予所有用户读写权限。这里我们把它作为"回收站"的家

bash 复制代码
[ ! -d /trash ] && mkdir /trash
chmod 777 /trash

2. 创建软删除命令remove

这个脚本就是我们自定义的"软删除"命令,会把你想删除的文件或目录移动到 /trash 目录,并加上时间戳重命名,实现"假装删除"

bash 复制代码
cat > /usr/local/bin/remove <<-"EOF"
#!/bin/bash
TRASH_DIR="/trash"
for NAME in $*; do
  STAMP=$(date +%s%N)  # 获取当前时间戳
  [ -f "$NAME" ] && mv "$NAME" ${TRASH_DIR}/$(basename "$NAME").${STAMP} >/dev/null 2>&1
  [ -d "$NAME" ] && mv "$NAME" ${TRASH_DIR}/$(basename "$NAME").${STAMP} >/dev/null 2>&1
done
EOF

chmod +x /usr/local/bin/remove

3. 定时清理回收站

这个脚本会查找 /trash 目录下 7 天前创建的文件,并彻底删除,避免"回收站"被塞爆

bash 复制代码
cat > /usr/local/bin/clear-trash.sh <<-"EOF"
#!/bin/bash
find /trash -maxdepth 1 -ctime +7 -exec rm -rf {} \;
EOF

chmod +x /usr/local/bin/clear-trash.sh

# 定时清理垃圾站
if crontab -l | grep -q /usr/local/bin/clear-trash.sh ; then
  cat /dev/null
else
  (
    crontab -l
    echo "0 0 * * * bash /usr/local/bin/clear-trash.sh &>/dev/null"
  ) | crontab
fi

4. 替换rm命令

这会让系统在启动时自动加载这个别名,当你输入 rm 命令时,其实执行的是 remove 脚本,帮你把文件"丢进回收站",而不是直接删除

bash 复制代码
sed -i '/rm/d' $HOME/.bashrc  # 删除旧的rm定义

cat > /etc/profile.d/rm.sh <<-"EOF"
#rm
alias rm='bash /usr/local/bin/remove'
EOF

5. 完整脚本

复制执行即可

bash 复制代码
bash <<-"FOE"
mkdir -p /trash
chmod 777 /trash
cat > /usr/local/bin/remove <<-"EOF"
#!/bin/bash
TRASH_DIR="/trash"
for NAME in $*;do
STAMP=`date +%s%N`
[ -f "$NAME" ] && mv $NAME ${TRASH_DIR}/$(basename $NAME).${STAMP} >/dev/null 2>&1
[ -d "$NAME" ] && mv $NAME ${TRASH_DIR}/$(basename $NAME).${STAMP} >/dev/null 2>&1
done
EOF
cat > /usr/local/bin/clear-trash.sh <<-"EOF"
#!/bin/bash
touch /trash
find /trash -maxdepth 1 -ctime +7 -exec rm -rf {} \;
EOF
chmod +x /usr/local/bin/remove
chmod +x /usr/local/bin/clear-trash.sh
cat > /etc/profile.d/rm.sh <<-"EOF"
#rm
alias rm='bash /usr/local/bin/remove'
EOF
sed -i '/rm/d' $HOME/.bashrc
if crontab -l | grep -q /usr/local/bin/clear-trash.sh ; then cat /dev/null ; else
( crontab -l
echo "0 0 * * * bash /usr/local/bin/clear-trash.sh &>/dev/null"
) | crontab
fi
crontab -l | grep "/usr/local/bin/clear-trash.sh"
echo -e "\033[1;33msource /etc/profile && alias rm\033[0m"
FOE

总结

📌通过几个简单的脚本,就能让 Linux 拥有"回收站"功能,安全删除、定期清理、自动运行,统统搞定。这不是炫技,而是自保。

如果你是在生产环境使用,记得把 /trash 单独挂载成一个逻辑卷或者挂载点,防止误删大文件把根目录撑爆。

相关推荐
万花丛中一抹绿1 分钟前
服务器硬件电路设计之 SPI 问答(一):解密 SPI—— 从定义到核心特性
服务器·spi·服务器硬件电路设计
Tim风声(网络工程师)7 分钟前
DNS有关知识(根域名服务器、顶级域名服务器、权威域名服务器)
linux·运维·服务器
热爱跑步的恒川12 分钟前
告别服务器!Amazon Lambda无服务开发实战指南
运维·服务器
拾心2138 分钟前
【运维进阶】Shell 函数的知识与实践
运维
you秀1 小时前
linux中的iptables的简介与常用基础用法
linux·运维·服务器
画中有画2 小时前
使用AI来实现拼多多自动化运营脚本
运维·人工智能·自动化·ai编程·rpa·自动化脚本
xlntj2 小时前
VsCode远程连接服务器后安装Github Copilot无法使用
服务器·vscode·github
matlab的学徒4 小时前
计算机网络
服务器·网络·计算机网络
vvilkim6 小时前
Java主流框架全解析:从企业级开发到云原生
java·运维·云原生
Wy_编程10 小时前
Linux-文本搜索工具grep
linux·运维·服务器