在CentOS系统中,回收站(Trash)是一个用于存储已删除文件的地方,以便在需要时进行恢复。每个用户都有自己的回收站,位于~/.local/share/Trash/files/
目录下。以下是关于如何在CentOS中管理回收站的详细步骤:
首先,确保每个用户都有一个回收站目录。如果没有,可以为每个用户创建一个:
mkdir -p ~/.local/share/Trash/files
为了使删除的文件自动移动到回收站,可以修改rm
命令。创建一个名为delete
的新文件,并赋予可执行权限:
#!/bin/bash
# 记录删除信息
log_trash() {
file=$1
mark1="."
mark2="/"
if [ "$file" = ${file/$mark2/} ]; then
fullpath="$(pwd)/$file"
elif [ "$file" != ${file/$mark1/} ]; then
fullpath="$(pwd)${file/$mark1/}"
else
fullpath="$file"
fi
echo "$(date +%s) \t $fullpath \t $2" >> ~/.local/share/Trash/.log
}
# 将文件移动到回收站
move_to_trash() {
if [ ! -d ~/.local/share/Trash/ ]; then
mkdir -m 777 -p ~/.local/share/Trash
fi
prefix=$(date +%Y_%m_%d)
if [ ! -d ~/.local/share/Trash/$prefix ]; then
mkdir -p ~/.local/share/Trash/$prefix
fi
files=("$@")
for file in "${files[@]}"; do
if [ -f "$file" -o -d "$file" ]; then
now=$(date +%Y%m%d_%H%M%S_%N)
file_name=${file%/}
move_trash_path="${HOME}/.local/share/Trash/$prefix/${file_name}_${now}"
/usr/bin/mv "$file" "$move_trash_path"
[ $? -eq 0 ] && log_trash "$file" "$move_trash_path" "$now"
fi
done
}
# 如果未提供参数,显示帮助信息
if [ $# -eq 0 ]; then
echo "Usage: rm file1 [file2 file3....]"
exit 128
fi
move_to_trash "$@"
将上述脚本保存为delete
,并赋予可执行权限:
chmod +x delete
然后,修改/etc/bashrc
文件,添加以下内容:
alias rm='delete'
最后,重新加载环境变量:
source /etc/bashrc
要清空回收站,可以使用以下命令:
rm -rf ~/.local/share/Trash/files/*
可以设置定时任务来定期清理回收站中的旧文件。例如,每周六零点清理删除时间超过3天的文件:
0 0 * * 6 find ~/.local/share/Trash -mtime +3 -type f -exec rm -rf {} \;
将此命令添加到用户的crontab
中:
crontab -e
/usr/bin/rm
命令。通过以上步骤,您可以在CentOS系统中有效地管理回收站,防止误删文件,并在需要时恢复文件。