centos

centos回收站文件删除原理

小樊
32
2025-06-12 11:42:32
栏目: 智能运维

在CentOS系统中,实际上并没有传统意义上的“回收站”功能。当文件被删除时,它们通常会被直接从文件系统中移除,而不是像Windows系统那样先移动到回收站。不过,CentOS提供了一些工具和方法来管理删除的文件,以便在误删后能够恢复。

文件删除原理

  1. 直接删除:使用 rm 命令删除文件时,文件将从文件系统的目录结构中解除链接(unlink),但文件数据依然存留在硬盘中。
  2. 回收站替代方案:可以通过安装 trash-cli 工具来模拟回收站功能。使用 trash-put 命令可以将文件移动到回收站,而不是直接删除。

回收站管理

  1. 创建回收站目录

    mkdir -p /root/.local/share/Trash/files/
    
  2. 编写回收站脚本:创建一个名为 trash.sh 的脚本,用于将删除的文件移动到回收站目录,并为文件添加时间戳以防止重名。

    #!/bin/bash
    TRASH_DIR="/root/.local/share/Trash/files"
    if [ ! -d "$TRASH_DIR" ]; then
        mkdir -p "$TRASH_DIR"
    fi
    if [ $# -eq 0 ]; then
        echo "Usage: $0 file_or_directory"
        exit 1
    fi
    for FILE in "$@" ; do
        if [ -e "$FILE" ]; then
            TIMESTAMP=$(date +%Y%m%d%H%M%S)
            BASENAME=$(basename "$FILE")
            NEW_NAME="${BASENAME}_$TIMESTAMP"
            mv "$FILE" "$TRASH_DIR/$NEW_NAME"
        else
            echo "'$FILE' does not exist!"
        fi
    done
    
  3. 替换默认的 rm 命令:编辑用户的 .bashrc 文件,将默认的 rm 命令替换为 trash.sh 脚本。

    alias rm='/bin/trash.sh'
    
  4. 自动清理回收站:编写一个脚本定期清理回收站中过期的文件。例如,删除超过30天的文件。

    #!/bin/bash
    TRASH_DIR="/root/.local/share/Trash/files"
    find "$TRASH_DIR" -type f -mtime +30 -exec rm -f {} \;
    echo "Trash cleaned up."
    

    让清理任务自动化执行,可以将此脚本添加到 crontab 中,例如每天运行一次:

    (crontab -l ; echo "0 0 * * * /bin/clean_trash.sh") | crontab -
    

彻底删除文件

若要彻底删除回收站中的文件,可以使用以下命令:

rm -rf /root/.local/share/Trash/files/*

请注意,这将永久删除这些文件,无法恢复。

0
看了该问题的人还看了