CentOS 回收站容量设置指南
前置说明
方案一 使用 trash-cli 配合脚本按容量自动清理(推荐)
#!/usr/bin/env bash
set -Eeuo pipefail
TRASH_DIR="${TRASH_DIR:-$HOME/.local/share/Trash/files}"
MAX_SIZE=$((100 * 1024 * 1024)) # 100MB,可按需修改
if [[ ! -d "$TRASH_DIR" ]]; then
echo "回收站目录不存在: $TRASH_DIR" >&2
exit 0
fi
# 计算当前大小(字节)
current=$(du -sb "$TRASH_DIR" 2>/dev/null | awk '{print $1}')
[[ -z "$current" ]] && current=0
if (( current > MAX_SIZE )); then
# 按修改时间升序(最旧在前),删除直到低于上限
# 使用 find ... -print0 与 sort -z 处理含空格/换行的文件名
find "$TRASH_DIR" -mindepth 1 -maxdepth 1 -print0 \
| sort -z -r -t '' -k 9 \
| while IFS= read -r -d '' f; do
if (( current <= MAX_SIZE )); then
break
fi
sz=$(stat -c%s "$f" 2>/dev/null || echo 0)
if rm -rf -- "$f"; then
(( current -= sz ))
fi
done
fi
0 * * * * /usr/local/bin/trash-cleanup.sh >>/var/log/trash-cleanup.log 2>&1
方案二 为 root 或特定用户设置自定义回收站目录(alias rm 方式)
alias rm='yzy'
alias lt='ls /data/.trash'
alias hy='huanyuan'
alias qk='qingkong'
yzy() {
local ts=$(date +%Y%m%d%H%M%S)
for f in "$@"; do
[[ -e "$f" ]] || continue
mv -i "$f" "/data/.trash/${f##*/}-${ts}"
done
}
huanyuan() {
local name=$1
local found
found=$(find /data/.trash -maxdepth 1 -name "${name}-[0-9]*" | head -n1)
[[ -n "$found" ]] && mv -i "$found" ./
}
qingkong() {
read -rp "确定清空回收站吗?(y/N) " ans
[[ "$ans" =~ ^[Yy]$ ]] && /bin/rm -rf /data/.trash/*
}
方案三 系统级强约束 使用磁盘配额限制回收站可用空间
/dev/sda1 /home ext4 defaults,usrquota,grpquota 1 2