当前位置: 首页 > ai >正文

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

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

文章目录

  • Linux文件回收机制:安全删除文件不怕误删
  • 一、Linux默认没有“回收站”?
  • 二、打造你自己的Linux回收站
    • 1. 建立回收站目录
    • 2. 创建软删除命令remove
    • 3. 定时清理回收站
    • 4. 替换rm命令
    • 5. 完整脚本
  • 总结


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

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

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

一、Linux默认没有“回收站”?

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

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

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

1. 建立回收站目录

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

[ ! -d /trash ] && mkdir /trash
chmod 777 /trash

2. 创建软删除命令remove

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

cat > /usr/local/bin/remove <<-"EOF"
#!/bin/bash
TRASH_DIR="/trash"
for NAME in $*; doSTAMP=$(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
EOFchmod +x /usr/local/bin/remove

3. 定时清理回收站

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

cat > /usr/local/bin/clear-trash.sh <<-"EOF"
#!/bin/bash
find /trash -maxdepth 1 -ctime +7 -exec rm -rf {} \;
EOFchmod +x /usr/local/bin/clear-trash.sh# 定时清理垃圾站
if crontab -l | grep -q /usr/local/bin/clear-trash.sh ; thencat /dev/null
else(crontab -lecho "0 0 * * * bash /usr/local/bin/clear-trash.sh &>/dev/null") | crontab
fi

4. 替换rm命令

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

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 <<-"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 单独挂载成一个逻辑卷或者挂载点,防止误删大文件把根目录撑爆。

http://www.xdnf.cn/news/13400.html

相关文章:

  • 查看 Ubuntu 系统信息
  • 国债与企业债:稳健与高收益的债券选择
  • JSON 是什么?核心概念与语法解析
  • JavaScript解密里的ChaCha20 加密算法全解
  • MCP使用
  • Java多线程实现之线程池详解
  • 如何彻底删除Neo4j中的所有数据:完整指南
  • 数组——数组的遍历
  • 佰力博科技与您探讨铁电材料电滞回线测量法
  • SpringBoot使用oshi获取服务器相关信息
  • 【学习笔记】QUIC
  • 0611的
  • 【WebSocket】WebSocket 多功能集成冲突问题解决方案
  • Ubuntu 22.04: 使用chroot切换到Ubuntu18.04运行环境进行开发编译
  • 【IQA技术专题】图像质量评价IQA技术和应用综述(万字长文!!)
  • 一站式了解单例模式
  • uniapp uni.createAnimation为文件交换位置动画效果
  • 界面控件DevExpress WPF v24.2新版亮点:报表等组件功能升级
  • Kotlin的MutableList和ArrayList区别
  • Kotlin 中的 Object
  • react-markdown在React的使用示例
  • 信息学奥赛CSP-J模拟阅读程序1(链表)
  • 2024睿抗-03
  • Oracle 的 FORCE_LOGGING 特性
  • ISO/IEC 14443 防碰撞协议 Type A Type B
  • 第26节 Node.js 事件
  • 爱普生 SG-9101CB以展频调制技术突破 EMI 难题​
  • 51la查看https统计,悟空统计助力高效运营
  • 系统集成自动化流程编排流实现 if-else 条件分支(一)
  • AIGC方案-java实现视频伪动效果