在 CentOS 中,系统并不自带统一的回收站机制,常见做法是基于 trash-cli 或自定义脚本实现并按需定制规则。下面给出可落地的配置方法与可扩展思路。
方案一 使用 trash-cli 标准化回收站
- 安装与验证
- 安装:sudo yum install -y trash-cli
- 验证:trash --version
- 常用命令
- 移入回收站:trash /path/to/file
- 列出回收站:trash-list
- 还原:restore-trash(交互选择)
- 按项删除:trash-rm /path/in/trash
- 清空回收站:trash-empty
- 配置要点
- 回收站位置遵循 FreeDesktop.org Trash Specification:每个用户默认在 $HOME/.local/share/Trash/files(数据)与 $HOME/.local/share/Trash/info(元数据)中;跨设备/挂载点删除时会使用对应挂载点下的同名目录。
- 可通过环境变量自定义行为(在 ~/.bashrc 或 /etc/profile.d/trash.sh 中设置):
- TRASH_DIR:自定义回收站根目录(不推荐覆盖系统默认,除非明确需求)
- TRASH_MAX_SIZE:回收站最大容量(单位字节,示例:10MB=10485760)
- TRASH_EXPIRE:保留天数(示例:7 天)
- 示例:
- export TRASH_DIR=“$HOME/.local/share/Trash”
- export TRASH_MAX_SIZE=10485760
- export TRASH_EXPIRE=7
- 使用建议
- 不建议直接把 alias rm=‘trash’ 全局覆盖,避免与脚本/系统维护场景冲突;可定义别名如 alias del=‘trash’,保留 rm 为真正的删除命令(或用脚本封装)。
- 如需对所有用户生效,将环境变量写入 /etc/profile.d/trash.sh 并 chmod +x。
方案二 自定义脚本实现回收站与自动清理
- 基本思路
- 创建回收站目录(如 ~/.trash 或 ~/.local/share/Trash)
- 用脚本将待删文件按“日期/小时”分目录移动,便于管理与回滚
- 提供便捷命令:查看(rl)、还原(undelfile)、清空(cleartrash)
- 用 cron 定期清理超期文件
- 参考脚本(/usr/local/bin/rm.sh)
- 功能:按“YYYY-MM-DD_HH”分目录;支持文件/目录;提供 rl/undelfile/cleartrash 辅助函数
- 使用:将 alias rm=‘/usr/local/bin/rm.sh’ 加入 ~/.bashrc 后执行 source ~/.bashrc
- 注意:该脚本仅做演示,生产环境请增强错误检查、并发安全与日志
- 定时清理示例(crontab -e)
- 每周清理:@weekly /bin/rm -rf /home/root/.trash/*
- 按天清理 7 天前:0 0 * * * find /home/root/.trash -mtime +7 -delete
- 安全提示
- 不要直接替换系统 /bin/rm;如需“安全 rm”,建议用别名指向脚本,并保留一个真正的 /bin/rm(如 surm=‘/bin/rm -i’)供维护场景使用。
方案三 桌面环境回收站 gvfs-trash
- 适用场景
- GNOME 桌面下使用文件管理器删除文件时,会进入 ~/.local/share/Trash(遵循 FreeDesktop 规范)。
- 基本用法
- 删除:gvfs-trash /path/to/file
- 列表/清空:命令行工具通常不可用,需通过文件管理器或 trash-cli 管理
- 说明
- gvfs-trash 的行为与桌面会话绑定,适合图形化操作;服务器/纯命令行环境建议优先使用 trash-cli。
常见自定义规则与实现要点
- 自定义保留天数
- 方式A(trash-cli):设置环境变量 TRASH_EXPIRE=7,配合定时任务定期执行 trash-empty 清理超过保留期的条目。
- 方式B(脚本):用 find 按 mtime 删除旧文件(如 find ~/.trash -mtime +7 -delete)。
- 容量上限
- 方式A(trash-cli):设置 TRASH_MAX_SIZE,并在脚本中检测当前回收站占用,超过阈值时按“最旧优先”删除。
- 方式B(脚本):du 统计目录大小,超出阈值时循环删除最旧文件直至满足上限。
- 按用户/目录隔离
- 回收站默认位于各用户的 $HOME/.local/share/Trash;若需共享或集中管理,可统一设置 TRASH_DIR 到专用目录,并配合权限控制。
- 安全与可回滚
- 避免使用 /bin/rm 别名覆盖;为“真正删除”保留命令(如 surm)。
- 脚本按“日期/小时”分目录,便于定位与回滚;重要场景建议记录操作日志。