麒麟kylinos误删文件可恢复:一、用extundelete扫描ext4分区;二、用lsof从/proc/pid/fd/提取被进程占用的已删文件;三、用debugfs进行inode级底层恢复;四、使用gui工具深度扫描;五、检查~/.local/share/trash回收站手动还原。
如果您在麒麟kylinos系统中执行了误删操作,且文件未进入回收站或已被清空,则文件可能仍保留在磁盘未覆盖区域。以下是多种可行的恢复方法:
一、立即停止写入并使用extundelete工具恢复
extundelete是专为ext3/ext4文件系统设计的开源恢复工具,适用于麒麟KYLINOS默认使用的ext4分区。它通过扫描文件系统日志和未分配inode重建已删除文件结构。
1、以root权限打开终端,执行sudo apt-get update确保软件源可用。
2、安装extundelete:sudo apt-get install extundelete。
3、确认误删文件所在分区,例如df -h .显示当前路径位于/dev/sda2。
4、卸载该分区(如非根分区):sudo umount /dev/sda2;若为根分区则跳过卸载,但必须确保系统处于最小化运行状态,禁止任何写入操作。
5、执行全盘恢复:sudo extundelete /dev/sda2 --restore-all。
6、等待扫描完成,恢复的文件将存放在当前目录下的RECOVERED_FILES文件夹中。
二、利用lsof定位仍在被进程占用的已删文件
当文件被删除时,若仍有进程(如tail、cat、vim等)持续打开该文件,其内容仍驻留在内存映射的/proc/pid/fd/中,可直接提取。
1、运行sudo lsof +L1列出所有已链接数为0但仍被打开的文件。
2、从输出中识别目标文件名及对应PID与FD编号,例如:vim 12345 user 4r REG 8,2 1024 1234567 /home/user/doc.txt (deleted)。
3、进入该进程文件描述符目录:cd /proc/12345/fd。
4、复制FD编号对应的文件(此处为4):sudo cp 4 /tmp/recovered_doc.txt。
5、验证文件完整性:file /tmp/recovered_doc.txt及head /tmp/recovered_doc.txt。
三、借助debugfs进行底层inode级恢复
debugfs是Linux内核自带的ext系列文件系统调试工具,可绕过高级接口直接读取磁盘块和inode信息,适用于extundelete失效或分区未卸载场景。
1、获取目标文件所在目录的inode号:sudo debugfs -R 'ls -l' /dev/sda2 | grep -A 5 'dirname'。
2、进入debugfs交互模式:sudo debugfs /dev/sda2。
3、在debugfs中执行lsdel命令列出所有已删除但inode未复用的条目。
4、找到目标文件的inode号(如19662057),执行stat 查看其block分布。
5、记录起始block号与offset偏移值,退出debugfs后执行:sudo dd if=/dev/sda2 of=/tmp/recovered_file bs=4096 skip=BLOCK_NUM count=1。
6、使用file命令检测输出文件类型,必要时手动指定编码或格式修复。
四、使用第三方图形化恢复工具
对于不熟悉命令行的用户,可选用兼容麒麟KYLINOS的GUI恢复软件,它们通常集成扫描引擎与预览功能,降低操作门槛。
1、下载并安装转转大师数据恢复软件或Stellar Data Recovery Linux版(需确认支持ARM64或x86_64架构)。
2、启动软件,选择误删文件所在的物理磁盘或挂载点(如/home分区)。
3、勾选“深度扫描”模式,点击“开始扫描”。
4、扫描过程中可实时预览识别出的文本、图片、文档类文件内容。
5、勾选确认有效的文件,指定外部存储设备(如U盘或另一块硬盘)作为恢复目标路径。
6、点击“恢复”,严禁将文件恢复至原分区,否则可能导致覆盖丢失数据。
五、检查回收站路径并手动还原
麒麟KYLINOS桌面环境(如UKUI)遵循XDG标准,使用~/.local/share/Trash作为统一回收站目录,文件并未真正删除,仅修改了元数据位置。
1、打开文件管理器,按Ctrl+H显示隐藏文件,进入~/.local/share/Trash/files/。
2、查找与误删文件同名或时间戳匹配的条目。
3、同时查看~/.local/share/Trash/info/下对应.trashinfo文件,确认原始路径。
4、将files/中的目标文件复制回原位置,或使用命令:mv ~/.local/share/Trash/files/filename ~/original/path/。
5、若回收站被清空,该方法失效,需切换至前述其他方法。










