温馨提示×

Linux回收站删除后如何找回

小樊
110
2025-03-13 08:25:36
栏目: 智能运维

在 Linux 系统中,通常使用 rm 命令删除文件后,文件会被直接从系统中移除,难以恢复。但是,可以通过以下几种方法来尝试找回误删的文件:

使用回收站功能

  1. 启用回收站
  • 在基于 GNOME 和 KDE 的桌面环境中,回收站功能是默认启用的。删除的文件会被移动到 ~/.local/share/Trash/files 目录中。
  • 可以使用以下命令查看回收站中的文件:
    ls ~/.local/share/Trash/files/
    
  • 如果文件在回收站中,可以使用 mv 命令将其恢复到原来的位置:
    mv ~/.local/share/Trash/files/被删除的文件路径 目标路径
    
  1. 使用 trash 脚本
  • 可以编写一个名为 trash 的 Shell 脚本,替代系统默认的 rm 命令。该脚本将文件移动到回收站目录,并为文件添加时间戳以防止重名。
  • 脚本内容示例:
    #!/bin/bash
    TRASH_DIR="$HOME/.trash"
    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
    

使用 extundelete 命令

  • extundelete 是一个用于恢复已删除文件的命令行工具,适用于 ext2、ext3 和 ext4 文件系统。
  • 安装 extundelete
    sudo apt-get install extundelete  # Debian/Ubuntu
    sudo yum install extundelete      # CentOS/RHEL
    
  • 使用 extundelete 恢复单个文件:
    extundelete /dev/vdb1 --restore-file 22.txt
    
  • 使用 extundelete 恢复全部删除的文件:
    extundelete /dev/vdb1 --restore-all
    

使用数据恢复工具

  • 如果以上方法都无法恢复文件,可以尝试使用专业的数据恢复工具,如 TestDisk、PhotoRec 等。
  • 安装 TestDisk:
    sudo apt-get install testdisk  # Debian/Ubuntu
    sudo yum install testdisk      # CentOS/RHEL
    
  • 使用 TestDisk 恢复已删除的文件:
    • 启动 TestDisk 并选择要恢复的磁盘。
    • 选择分区类型并进行分析。
    • 选择需要恢复的分区,然后按 Enter 键。
    • 选择文件夹,并使用 C 键来恢复它。

预防措施

  • 为了防止文件被误删除,建议定期备份重要文件和文件夹。
  • 可以使用 rsync 或其他工具定期将文件夹备份到其他存储介质或远程服务器上。

请注意,数据恢复的成功率取决于文件被删除后的时间长短以及磁盘上是否有新数据写入。因此,建议在日常工作中养成良好的备份习惯,以防止误删文件。

0