CentOS定制Recycle(回收站)的常见方法
CentOS系统默认未内置图形化回收站功能,但可通过以下方法手动实现或增强回收站特性,满足不同场景需求:
安装:通过yum包管理器安装trash-cli,支持回收站的完整操作(移动、查看、清空、恢复)。
sudo yum install trash-cli
配置:编辑/etc/trash.conf文件,调整回收站参数(如大小、保留时间、忽略文件类型):
[Trash]
trash_dir = ~/.local/share/Trash/files # 回收站文件存储路径
trash_info_dir = ~/.local/share/Trash/info # 回收站元信息路径
trash_max_file_size = 10485760 # 单个文件最大10MB(可选)
trash_max_files = 1000 # 最多存储1000个文件(可选)
trash_keep_days = 7 # 文件保留7天(可选)
常用命令:
trash /path/to/file_or_directorytrash-listtrash-empty(可指定天数,如trash-empty 30清空30天前的文件)trash-restore(交互式选择需恢复的文件)安装:适用于图形界面用户,集成于GNOME桌面环境,操作更直观。
sudo yum install gvfs-trash
使用方法:
gvfs-trash /path/to/filegvfs-trash-listgvfs-trash-empty步骤:通过脚本将rm命令重定向到回收站目录,替代直接删除。
mkdir -p ~/.local/share/Trash/files # 用户级回收站
/bin目录):#!/bin/bash
TRASH_DIR="$HOME/.local/share/Trash/files"
for item in "$@"; do
timestamp=$(date +%s)
filename=$(basename "$item")
mv "$item" "$TRASH_DIR/${filename}.${timestamp}" # 添加时间戳避免重名
done
cp remove.sh /bin/rm
chmod +x /bin/rm
~/.bashrc):alias rm='/bin/rm' # 将rm指向自定义脚本
alias rtrash='ls ~/.local/share/Trash/files/' # 查看回收站
alias cleartrash='read -p "确定清空回收站?(y/n)" && [[ $REPLY == "y" ]] && rm -rf ~/.local/share/Trash/files/*' # 清空回收站
source ~/.bashrc # 重新加载环境变量
效果:执行rm命令时,文件会移动到~/.local/share/Trash/files目录,而非永久删除
适用场景:需要系统级回收站支持(如ext4文件系统),通过挂载选项启用扩展属性。
/或/home),添加user_xattr,acl选项:UUID=your-uuid / ext4 defaults,user_xattr,acl 1 1
sudo mount -o remount /
mkdir -p ~/.Trash-1000 # 1000为用户ID(可通过id -u查看)
chmod 1730 ~/.Trash-1000 # 设置权限(所有者可读写执行,组和其他用户无权限)
原理:user_xattr选项允许用户为文件设置扩展属性,acl选项支持访问控制列表,配合.Trash-1000目录可实现系统级回收站功能
适用场景:需要实时捕获文件删除操作(如脚本或批量删除),避免遗漏。
sudo yum install inotify-tools
monitor_trash.sh):#!/bin/bash
MONITOR_DIR="/path/to/monitor" # 需要监控的目录(如/home)
TRASH_DIR="$HOME/.local/share/Trash/files"
inotifywait -m -r -e delete --format '%w%f' "$MONITOR_DIR" | while read FILE; do
mv "$FILE" "$TRASH_DIR"
done
chmod +x monitor_trash.sh
./monitor_trash.sh & # 后台运行
注意:需确保脚本持续运行(可通过nohup或systemd服务管理),否则监控会中断
目的:避免回收站占用过多磁盘空间,定期清理过期文件。
clean_trash.sh):#!/bin/bash
TRASH_DIR="$HOME/.local/share/Trash/files"
find "$TRASH_DIR" -type f -mtime +7 -exec rm -f {} \; # 删除7天前的文件
crontab -e):0 0 * * * /bin/bash /path/to/clean_trash.sh # 每天午夜执行
说明:可根据需求调整-mtime参数(如+30表示30天),或结合trash-cli的trash-empty命令实现更灵活的清理
/.local/share/Trash)需对所有用户可写(chmod 1777),用户级回收站目录(如~/.local/share/Trash)仅对当前用户可写。gvfs-trash,其与文件管理器(如Nautilus)集成更好;若使用命令行,trash-cli是更通用的选择。