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
)。