Debian中恢复误删除文件的常用方法
Debian默认将删除的文件移动到隐藏的.local/share/Trash目录(而非直接永久删除),可通过以下步骤恢复:
ls -a ~/.local/share/Trash,其中files子文件夹存放删除的文件,info子文件夹存储元数据(如原路径)。cp命令将文件复制到目标位置,例如cp ~/.local/share/Trash/files/误删文件名 ~/恢复路径/。files文件夹,用cp -r命令递归复制,例如cp -r ~/.local/share/Trash/files/误删目录名 ~/恢复路径/。extundelete是专门针对ext系列文件系统的恢复工具,通过读取文件系统日志恢复未覆盖的数据:
sudo apt-get install extundelete安装。sudo extundelete /dev/sda1 --restore-file /home/user/误删文件.txt(/dev/sda1为文件所在分区)。--restore-directory参数,例如sudo extundelete /dev/sda1 --restore-directory /home/user/误删目录。sudo extundelete /dev/sda1 --restore-all,恢复分区下所有可恢复的文件(保存至RECOVERED_FILES目录)。sudo apt-get install testdisk。sudo testdisk,选择目标磁盘(如/dev/sda),选择分区表类型(通常为Intel),执行Analyse→Quick Search查找分区,选择分区后按C键复制文件到安全位置。sudo apt-get install photorec。sudo photorec /dev/sda1(指定分区),选择文件系统类型(如ext4),设置保存目录(如/tmp/recovered),开始扫描并恢复文件(按文件头信息识别类型,如.jpg、.docx)。若文件被删除但仍被某个进程占用(如编辑器未关闭),可通过lsof命令查找并恢复:
sudo lsof | grep deleted,输出中会显示进程ID(PID)和文件路径(如/var/tmp/误删文件.log)。cp /proc/<PID>/fd/<FD号> ~/恢复路径/(<FD号>为lsof输出中的文件描述符,如1u中的1)。若文件数据块未被新数据覆盖,可通过dd命令从磁盘中提取原始数据:
/dev/sda1),卸载分区(sudo umount /dev/sda1,避免写入覆盖)。dd命令复制数据块到新文件,例如sudo dd if=/dev/sda1 of=/tmp/recovered.dd bs=4M(bs为块大小,可根据磁盘性能调整)。hexedit或strings命令分析recovered.dd文件,提取所需内容(需具备一定二进制数据处理经验)。若有定期备份(如使用rsync、tar、Deja Dup等工具),可从备份介质(外部硬盘、NAS、云存储)中恢复文件:
backup.tar.gz,执行sudo tar -xzvf backup.tar.gz -C /,将备份内容解压到根目录(覆盖时需谨慎,建议先备份当前系统)。tar的校验和),避免二次损坏。若希望删除文件时自动进入回收站,可安装第三方工具(如rmtrash):
sudo apt install rmtrash,部分发行版需自行下载脚本)。rm命令,例如rmtrash 误删文件.txt,文件将移动到~/.local/share/Trash(与系统回收站一致),后续可通过回收站界面或命令恢复。dd)。