我在以下过程中不小心丢失了一个pdf文件
我在 Ubuntu 18.04 的 Wine 中运行 pdf 软件应用程序 PDFXCView,以在 ext4 文件系统中打开 pdf 文件。
然后我将
mv
pdf文件放在其他地方。- 然后我编辑了已在 PDFXCView 中打开的 pdf 文件。当我尝试保存编辑后的文件时,我必须选择“另存为...”来找到文件的当前路径并尝试覆盖它。但是 PDFXCView 无法覆盖该文件,并且使其消失然后中止。
以下是一些尝试。
如果有帮助的话,我记得丢失的 pdf 文件的路径名。
我无法通过 备份文件系统的分区
dd
,因为我没有足够大的容量用于该分区的额外硬盘。我尝试
debugfs
根据 https://unix.stackexchange.com/a/80285,$ sudo debugfs -w /dev/sda4 debugfs: lsdel Inode Owner Mode Size Blocks Time deleted 22549259 1000 100600 141 1/ 1 Sat Apr 2 09:14:06 2016 1 deleted inodes found. debugfs: logdump -i 22549259 22549259: File not found by ext2_lookup
该文件在 2016 年只是丢失而不是被删除,所以我不确定它是否找到了正确的 inode。
我看到在https://unix.stackexchange.com/a/98700/那说使用
grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
恢复包含已知模式的文本文件。
不久前,我通过使用连接几个较小的 pdf 文件创建了丢失的 pdf 文件
pdftk
,并且我仍然拥有这些较小的文件。从一个较小的pdf文件中,我可以通过 看到较小pdf文件的二进制内容cat smaller.pdf | less
,其中包含可读的pdf格式特定字符串/URI (http://flask.pocoo.org/docs/1.0/api/#flask.Flask.logger)
所以我尝试:
sudo grep -a -C 500 'http://flask.pocoo.org/docs/1.0' /dev/sda4 > /tmp/test/recover
因为那些小文件和丢失的文件都包含字符串,并且
-C 500
指定文件的开头和结尾太随意了。我不确定它能否产生有用的结果。
我想知道我可以尝试恢复 pdf 文件的方法是什么?
谢谢!
答案1
如果可能的话,绝对要从保留数据的分区开始(如果它不是您的主系统分区,您会惊讶地发现即使一个月后也可以恢复)。然后继续foremost
(我最初提到过magicrescue
,但foremost
性能也一样好,但它有一个现成的收据pdf
sudo apt update && sudo apt install foremost
sudo foremost -v -t pdf -i [PATH] -o ~/pdfrecovery/
# -t - Filetype [in our case pdf]
# -i - Input file [can be as wide as /dev/sdX or more detailed]
# -o - Output Directory
我只是在我的一个驱动器上运行了几秒钟,/dev/sdX
并提取了 370 个 pdf 文件。这些文件将没有原始名称,并且看起来像这样:14348984.pdf
所以该-i
标志非常重要。
祝你好运。
更新
您的第二个选择是testdisk
/photorec
在您的情况下,在处理已知路径时可能会更容易。testdisk
并且photorec
确实有一些警告,如果不小心(并且碰巧确认多个对话框询问您是否要应用更改)可能会导致磁盘损坏,但如果您放慢速度,它可能会更合适,并且可能会显示得更快您将获得一个良好的文件夹树结构,其中包含与丢失的文件相对应的节点。如果您在 2 小时内找不到文件foremost
,请发表评论,我将提供第二种testdisk
方法。
更新2
当我刚刚测试它时,在定位特定已删除文件方面testdisk
遇到了困难。foremost
它完美地保留了文件夹树和文件名结构,从而限制了创建每个文件所花费的时间*.pdf
。这两种方法有很大不同,如果文件非常重要,我肯定会使用这两种方法testdisk
来foremost
定位相同的文件,以确保最终得到一个完整的未损坏的文件。