centos

centos中回收站如何管理

小樊
49
2025-04-06 18:55:13
栏目: 智能运维

在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

注意事项

  1. 权限:确保回收站目录和文件的权限设置正确,以防止未授权访问。
  2. 恢复文件:从回收站恢复文件时,文件名可能会带有时间后缀,以防止同名文件覆盖。
  3. 直接删除:如果需要直接删除文件而不移动到回收站,可以使用/usr/bin/rm命令。

通过以上步骤,您可以在CentOS系统中有效地管理回收站,防止误删文件,并在需要时恢复文件。

0
看了该问题的人还看了