Linux 回收站设置指南
一 系统自带回收站与 trash cli
sudo apt-get install trash-clitrash file_or_dirtrash-listtrash-restore(按编号选择)trash-emptyrm 并不会进入回收站;若希望 rm 更安全,可用别名或包装脚本将其改为移动到回收站(见下文)。二 命令行回收站方案一 使用别名或函数封装 mv
mv 到该目录,并配套“列出/恢复/清空”的便捷命令。source ~/.bashrc 生效):
mkdir -p ~/.trashalias rm='mv -i -t ~/.trash "$@"'
alias rl='ls -l ~/.trash'
unrm() { mv -i ~/.trash/"$@" .; }
cleartrash() { read -p "Clear ~/.trash? [y/N] " c; [[ $c =~ ^[Yy]$ ]] && /bin/rm -rf ~/.trash/*; }
mkdir -p ~/.Recycle_bin
Recycle_bin() { for f; do [ -e "$f" ] || continue; ts=$(date +%Y%m%d-%H%M%S); d="${f%/*}"; [ "$d" = "$f" ] && d="."; bn=$(basename "$f"); mv -i "$f" "$d/.Recycle_bin/${bn}.$ts"; done; }
undelfile() { mv -i ~/.Recycle_bin/"$@" .; }
alias dl='ls ~/.Recycle_bin'
clearall() { read -p "Clear Recycle_bin? [y/N] " c; [[ $c =~ ^[Yy]$ ]] && /bin/rm -rf ~/.Recycle_bin/*; }
mv -i 可在覆盖同名文件前提示;-t ~/.trash 便于一次移动多个参数。rm,可在脚本中将 rm 重命名为 safe-rm 或移出 PATH,避免覆盖系统 rm 的行为。三 命令行回收站方案二 使用脚本统一管理 delete 命令
alias rm='/usr/local/bin/delete'。#!/usr/bin/env bash
TRASH=/tmp/.recycle
mkdir -p "$TRASH"
now=$(date +%Y-%m-%d-%H:%M:%S)
for f; do
[ -e "$f" ] || { echo "Not exist: $f"; continue; }
bn=$(basename "$f")
dest="$TRASH/${bn}.$now"
mv -i "$f" "$dest" && echo "Moved to $dest"
done
0 2 * * * /bin/rm -rf /tmp/.recycle/*(示例为每天 02:00 清空,请按需求调整)。四 Samba 共享回收站设置
[share]
path = /srv/samba/share
read only = No
vfs objects = recycle
recycle:repository = .recycle/%U # 每个用户独立回收站目录
recycle:keeptree = Yes # 保留原目录结构
recycle:versions = Yes # 同名文件保留历史版本
recycle:touch = Yes # 移动后更新访问时间
recycle:exclude = *.tmp|*.temp|~$* # 排除临时文件
recycle:excludedir = /tmp|/temp|/cache
systemctl restart smbd nmbd 或 smbd 对应服务)使配置生效。五 维护与安全建议
0 1 * * * /bin/rm -rf ~/.trash/*(每天 01:00 清空,可按需改为保留 7/30 天)。rm -rf 别名:若用别名替换 rm,务必保留紧急通道(如 \rm 或 /bin/rm)处理系统维护场景,避免脚本或自动化任务受影响。