简介
如果你的文件被误删了, 别着急, 做好如下准备:
- 首先, 不要往被删除文件所在的磁盘分区创建/复制新文件
- 如果是Windows系统, 那么你基本上可以在回收站里找到
- 如果是Linux系统, 如果是右击删除的, 也可以到回收站里看看. 但是如果是用
rm 命令删除的, 那么你在回收站里找不到哦, 可以试试本文方法.
简介有点长, 不感兴趣, 可以略过…
今天在使用vscode时,手残点了Discard All Changes 按钮, 在点击该按钮前,还特意复制了一份数据. 然而!!! 点击之后发现: 这几天辛辛苦苦编写的代码和造的数据全都不见了, 连同刚刚复制的副本!!!.
为何副本也会被一起删掉, 都不在一个目录下. 由于很长一段时间没有改过该代码,也没注意哪个文件夹在用Git管理. 仔细查看后发现, 副本与原始数据文件夹在同一个Git目录下, vscode 那个功能是取消自上次git 提交之后的所有的改变, 自然就将副本也删除了. 手残!!! 手残!!! 手残!!!
无奈之下, 只能寻找数据恢复软件, 期望能恢复出来(此处抱有侥幸心里 , 实在恢复不出来就只能重写了). 由于是Linux系统, 之前用的Windows上的恢复软件用不了. 也不知道重启进Windows系统再恢复可靠不. 不过还是不愿冒这个险.
于是寻找Linux下的数据恢复软件, 首先试了 extundelete , 结果很抱歉, 报如下错误
Bad magic number in super-block when trying to open filesystem
原来是不支持该分区的格式, 经查证发现是支持Linux下的ext3, ext4 这些. 而我的刚好是 NTFS 格式 (因为当时是在Windows下进行分区, 选择了次格式). 运气好像就是那么差!
无奈之下, 继续寻找, OK, 主角登场 .
使用TestDisk恢复数据
首先看下官网介绍, 如TestDisk官网所述, 使用TestDisk可以实现以下功能 (对照翻译了一下):
- Fix partition table, recover deleted partition (修复分区表, 恢复删除的分区)
- Recover FAT32 boot sector from its backup (从备份中恢复FAT32引导/启动扇区)
- Rebuild FAT12/FAT16/FAT32 boot sector (重建FAT12/FAT16/FAT32 引导/启动扇区)
- Fix FAT tables (修复FAT表)
- Rebuild NTFS boot sector (重建 NTFS 引导/启动扇区)
- Recover NTFS boot sector from its backup (从备份中恢复NTFS引导扇区)
- Fix MFT using MFT mirror (使用MFT镜像修复MFT)
- Locate ext2/ext3/ext4 Backup SuperBlock (定位 ext2/ext3/ext4 备份 超级块)
- Undelete files from FAT, exFAT, NTFS and ext2 filesystem (从FAT, exFAT, NTFS and ext2文件系统中恢复删除的文件)
- Copy files from deleted FAT, exFAT, NTFS and ext2/ext3/ext4 partitions. (从删除的FAT, exFAT, NTFS and ext2/ext3/ext4 分区中复制文件)
`功能好全啊!!! 而且支持多系统, 特别是后两个, 是我现在想要的. 再定睛一看: TestDisk is powerful free data recovery software! , 没错 功能强大的免费数据恢复软件 ! 此处省略1000字.
此外, 如官网所述, 如果testdisk 不能恢复文件, 可以用它的 photorec 尝试恢复.
好的, 废话说完了, 下面以: Linux (Ubuntu) 下恢复误删的 NTFS 格式分区下的文件为例说明. 从官网上找到了类似的说明文档 Undelete files from NTFS with TestDisk, 简要列举步骤如下.
-
首先, 需要下载并解压软件(如 testdisk-7.2-WIP.linux26-x86_64.tar.bz2 ) 得到(testdisk-7.2 ). 注意不要将其放到想恢复的文件所在磁盘分区. -
执行 sudo testdisk-7.2/testdisk_static 启动软件, 如下图所示, 选择创建日志文件 -
接下来选择被删除文件所在磁盘 -
择磁盘分区表类型并回车 -
选择功能并回车, 此处务必选择正确! -
进一步选择被删除文件所在分区, 然后选择 undelete 扫描待恢复文件 -
出现扫描结果, 浏览查看是否有想恢复的文件 -
根据提示操作选择复制你想恢复的文件 -
为待拷贝文件选择目的地路径, 此处未截图, 按照提示选择即可. 然后你应该可以在目的路径下看到复制的文件. -
恢复的文件只有管理员能读取, 可以修改其归属于你的用户. Linux下执行 sudo chown -R user 即可, 注意替换 user 为你的用户名.
OK, 至此完毕, 其它功能, 请参阅管阀文档TestDisk.
|