首页 > 系统相关 >让 Linux 拥有回收站:轻松找回误删文件的完美解决方案

让 Linux 拥有回收站:轻松找回误删文件的完美解决方案

时间:2024-09-03 11:25:46浏览次数:13  
标签:bin 文件 误删 sh Linux rm trash 回收站



文章目录

  • 让 Linux 拥有回收站:轻松找回误删文件的完美解决方案
  • 方案设计
  • 编写 `trash` 脚本
  • 定期清理回收站
  • 总结



辛苦您也关注下公众号,感谢!




让 Linux 拥有回收站:轻松找回误删文件的完美解决方案_运维



让 Linux 拥有回收站:轻松找回误删文件的完美解决方案

在 Linux 系统中,使用 rm 命令删除文件后,文件通常会被直接从系统中移除,难以恢复。为了避免误删文件的风险,我们可以通过编写一个 Shell 脚本,在 Linux 上实现类似 Windows 系统的回收站功能。

方案设计

实现 Linux 下的回收站功能的基本思路是:将用户“删除”的文件或目录移动到一个指定的目录(如 ~/.trash),而不是直接删除。这样,用户可以在误删后从回收站中找回文件。为防止回收站占用过多磁盘空间,还需要设计一个自动清理过期文件的机制。

编写 trash 脚本

接下来,我们编写一个名为 trash 的 Shell 脚本,替代系统默认的 rm 命令。该脚本的作用是将用户想要删除的文件移动到回收站目录,并为文件添加时间戳以防止重名。

#!/bin/bash

# 回收站目录
TRASH_DIR="$HOME/.trash"

# 确保回收站目录存在
if [ ! -d "$TRASH_DIR" ]; then
    mkdir -p "$TRASH_DIR"
fi

# 检查是否提供了文件名参数
if [ $# -eq 0 ]; then
    echo "Usage: $0 file_or_directory"
    exit 1
fi

# 遍历所有传递的参数
for FILE in "$@"; do
    if [ -e "$FILE" ]; then
        TIMESTAMP=$(date +%Y%m%d%H%M%S)
        BASENAME=$(basename "$FILE")
        NEW_NAME="$BASENAME-$TIMESTAMP"
        mv "$FILE" "$TRASH_DIR/$NEW_NAME"
    else
        echo "'$FILE' does not exist!"
    fi
done

将该脚本保存为 ~/bin/trash.sh,并赋予其可执行权限:

chmod +x ~/bin/trash.sh

为了方便使用,可以将系统默认的 rm 命令通过别名替换为 trash 脚本。编辑 ~/.bashrc~/.zshrc 文件,添加以下内容:

alias rm=~/bin/trash.sh

更新终端配置后,用户可以像往常一样使用 rm 命令“删除”文件,例如:

rm myfile.txt

此操作将文件 myfile.txt 移动到 ~/.trash 目录,并在文件名后添加时间戳以避免重名冲突。

定期清理回收站

为了防止回收站占用过多的磁盘空间,我们可以编写一个脚本定期清理回收站中过期的文件。例如,可以删除超过30天的文件:

#!/bin/bash

# 回收站目录
TRASH_DIR="$HOME/.trash"

# 删除30天前的文件
find "$TRASH_DIR" -type f -mtime +30 -exec rm -f {} \;

echo "Trash cleaned up."

将该脚本保存为 ~/bin/clean_trash.sh,并赋予其可执行权限:

chmod +x ~/bin/clean_trash.sh

为了让清理任务自动化执行,可以将此脚本添加到 crontab 中,例如每天运行一次:

(crontab -l ; echo "0 0 * * * ~/bin/clean_trash.sh") | crontab -

crontab 任务将在每天凌晨0点运行 clean_trash.sh 脚本,自动清理回收站。

总结

通过以上步骤,我们在 Linux 系统中实现了一个简单且实用的回收站功能,并设置了自动清理过期文件的机制。这种方法不仅提高了误删文件的恢复能力,还能有效管理磁盘空间。根据实际需求,这一方案还可以进一步扩展和优化,例如增加文件恢复功能或自定义文件的保留时间等。


标签:bin,文件,误删,sh,Linux,rm,trash,回收站
From: https://blog.51cto.com/u_13721902/11907276

相关文章

  • 告别无进度等待:Linux系统中为cp和mv命令加上实时进度条
    文章目录告别无进度等待:Linux系统中为cp和mv命令加上实时进度条一、advcpmv简介二、advcpmv的优势三、安装advcpmv3.1前置准备3.2设置环境变量3.3下载并安装3.4手动安装步骤3.5配置别名四、使用advcpmv4.1查看帮助信息4.2实际操作五、总结辛苦您也关注下公众号,感谢!告......
  • 在Linux中使用C++调用Python程序
    为什么要用C++调Python我们训练部署CNN模型时,服务器用Pytorch测试的精度比我们部署端精度高0.5%。经过多方排查,发现是由于Pytorch预处理图片使用PIL进行图片读取和尺寸调整,但是部署端采用OpenCV进行图片读取和尺寸调整。两种实现方式实现的Resize操作差异非常大。为了快速完成项......
  • Linux--实现简易shell
    文章目录shell定义和功能myshell.cGetCwd()GetUsrName()GetHostName()MakeCommandLineAndPrint()GetUserCommand()SplitCommand()Die()ExecuteCommand()GetHome()Cd()CheckBuildin()CheckRedir()myshell.c完整代码makefile测试函数和进程之间的相似性Shell是一个功能......
  • VMware Workstation 17.5.2 Pro for Linux 更新 OEM BIOS 2.7 支持 Windows Server 20
    VMwareWorkstation17.5.2ProforLinux更新OEMBIOS2.7支持WindowsServer2025VMwareWorkstation17.5.2PromacOSUnlocker&OEMBIOS2.7forLinux在Linux上运行macOSSonoma请访问原文链接:https://sysin.org/blog/vmware-workstation-17-unlocker-linux/,查......
  • linux 硬件 arm架构
    一.ARM:1.时钟晶振:        在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。2.系统复位:        这个复位会使整个芯......
  • Jenkins - 在Rocky Linux系统下安装Jenkins和配置Agent节点
    安装Jenkins主节点下载和安装JenkinsLTS版本本机信息[root@localhost~]#cat/etc/system-releaseRockyLinuxrelease9.4(BlueOnyx)[root@localhost~]#[root@localhost~]#uname-aLinuxlocalhost.localdomain5.14.0-427.33.1.el9_4.x86_64#1SMPPREEMPT_DYNA......
  • 【Linux】Linux系统调试:如何选择strace和ltrace,全面对比
    在调试和诊断Linux程序时,strace和ltrace是两款常用的命令行工具。尽管它们都用于跟踪程序的行为,但它们的关注点和用途有所不同。本文将详细解析strace和ltrace的区别,帮助你选择适合的工具进行调试和诊断。......
  • Linux目录结构命令
    日志查询4剑客(head、tail、less、more)概述Linux日志文件大,通过cat、vi/vim进行查看,系统可能卡死、内存不足推荐使用不会占用系统太多内存的命令,查看日志:head/tail、less/more故障案例:日志查询命令使用★★★★★1)head显示文件的头几行(默认是头十行)head选项 -nn......
  • linux进程间通信——信号量(通俗易懂,看这一篇就够了)
    信号量概念特点信号量实际是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。很多进程会访问同一资源,或者向共享内存写入一些东西,为防止争夺资源混乱。可以给一些进程上锁,让其排队等待工作原理P(sv):如果sv的值大于零,就给它减1;如果它的值为......
  • Linux日志-btmp日志
    作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。Linux进阶部分又分了很多小的部分,我们刚讲完了Linux基础软件,下面是Linux日志。Linux系统中的日志是记录系统活动和事件的重要工具,它们可以帮助管理......