CentOS 回收站清理脚本与实现方式
一 脚本类型与适用场景
二 可直接使用的清理脚本
#!/usr/bin/env bash
# 用法:sudo ./clean_gnome_trash.sh [DAYS=7]
set -Eeuo pipefail
DAYS=${1:-7}
TRASH_ROOT="${HOME}/.local/share/Trash"
FILES_DIR="$TRASH_ROOT/files"
INFO_DIR="$TRASH_ROOT/info"
if [[ ! -d "$FILES_DIR" ]]; then
echo "未找到回收站目录:$FILES_DIR"
exit 0
fi
# 删除超过指定天数的文件与目录
find "$FILES_DIR" -mindepth 1 -mtime +"$DAYS" -delete 2>/dev/null || true
find "$INFO_DIR" -mindepth 1 -mtime +"$DAYS" -delete 2>/dev/null || true
echo "已清理 $TRASH_ROOT 中超过 $DAYS 天的项目。"
说明:GNOME 回收站由 files/ 与 info/ 组成,清理时建议两者同步;如为 root 执行,请将 $HOME 替换为 /root。该脚本可按需设置保留天数(默认 7 天)。
#!/usr/bin/env bash
# 用法:sudo ./clean_custom_trash.sh [TRASH_DIR=/root/.trash] [DAYS=30]
set -Eeuo pipefail
TRASH_DIR="${1:-/root/.trash}"
DAYS=${2:-30}
[[ -d "$TRASH_DIR" ]] || { echo "回收站不存在:$TRASH_DIR"; exit 0; }
# 删除超过指定天数的文件与目录
find "$TRASH_DIR" -mindepth 1 -mtime +"$DAYS" -delete 2>/dev/null || true
echo "已清理 $TRASH_DIR 中超过 $DAYS 天的项目。"
说明:适用于自建回收站(如 ~/.trash)。可按用户或全局设置不同的 TRASH_DIR,并调整保留天数(默认 30 天)。
#!/usr/bin/env bash
# 用法:sudo ./clean_trash_by_size.sh [TRASH_DIR=/root/.trash] [MAX_KB=10485760] # 10GB
set -Eeuo pipefail
TRASH_DIR="${1:-/root/.trash}"
MAX_KB=${2:-10485760} # 默认 10GB
[[ -d "$TRASH_DIR" ]] || { echo "回收站不存在:$TRASH_DIR"; exit 0; }
# 计算回收站总大小(KB)
total_kb=$(du -sk "$TRASH_DIR" 2>/dev/null | awk '{print $1}')
if (( total_kb > MAX_KB )); then
# 简单策略:先删文件,再删空目录;可按需改为按 mtime 逐步清理
find "$TRASH_DIR" -mindepth 1 -type f -delete 2>/dev/null || true
find "$TRASH_DIR" -mindepth 1 -type d -empty -delete 2>/dev/null || true
echo "回收站超过 ${MAX_KB}KB(当前 ${total_kb}KB),已执行清理。"
else
echo "回收站当前 ${total_kb}KB,未超过阈值 ${MAX_KB}KB。"
fi
说明:当回收站容量超过阈值(默认 10GB)时触发清理,优先删除文件再清理空目录;可按需优化为“按最旧文件先删”的策略。
三 定时任务与一键安装示例
# 每天 02:00 清理 GNOME 回收站中超过 7 天的项目
0 2 * * * /usr/bin/find /root/.local/share/Trash/files -mindepth 1 -mtime +7 -delete
0 2 * * * /usr/bin/find /root/.local/share/Trash/info -mindepth 1 -mtime +7 -delete
# 每天 03:00 清理自定义回收站(/root/.trash)中超过 30 天的项目
0 3 * * * /usr/bin/find /root/.trash -mindepth 1 -mtime +30 -delete
说明:将脚本保存至如 /usr/local/bin/,使用 crontab -e 添加任务;为多用户环境分别设置其 HOME 路径。
#!/usr/bin/env bash
# CentOS/RHEL
sudo yum install -y trash-cli
# 验证
trash-empty --version 2>/dev/null || echo "trash-cli 安装失败,请检查仓库或网络。"
说明:安装后可使用 trash-empty 一键清空,或配合 trash-list/trash-restore 做更细粒度运维。
四 使用与风险提示