背景:在 Dell Latitude 上 OEM 安装 Ubuntu 18.04。请注意,这不是 OEM 安装的 Ubuntu,而是我使用“作为 OEM 安装”选项安装的 Ubuntu 18.04。
在浏览菜单时,用户单击了某个东西,在下次启动时,OEM 安装变为常规安装,用户名不是oem
。他被提示进入常规安装屏幕,并尽其所能填写了信息。没有任何地方警告数据会丢失。系统立即关闭,现在我的桌面上只读安装了驱动器。
现在,这已转换为常规安装,如何恢复其中的数据/home/oem/
?请注意,extundelete
在磁盘上找不到任何已删除的内容,但我确实看到/opt/
包含第三方应用程序的自定义目录仍然完好无损。
我曾经autopsy
扫描过该驱动器,确实看到有一个名为的文件(不是目录)/home/oem/
,但其内容似乎没用:
https://pastebin.com/XXCiu7Bb
我也尝试使用(Photorec 工具)打开分区,testdisk
但也看到了文件 /home/oem
但不是我知道是 OEM 用户主目录的目录/home/oem/
。可能我在恢复过程的早期阶段意外创建了这个文件,当时它还在笔记本电脑中,但现在我在另一台计算机上以只读方式安装了该驱动器。是的,我知道由于驱动器以读写方式安装,一些数据可能已经丢失。
我如何恢复用户在 OEM 安装中拥有的任何文件?/home/oem/
如果可能的话,我会对目录中不再存在的任何文件感到满意,但主要是文本和 ODT 文件。
答案1
让我们快速开始介绍 OEM 环境的一般用途:它允许一次创建和定制单台机器或一小批机器。这(相对)类似于 Windows 的概念审核模式. 典型的 OEM 工作流程如下:
- OEM 启动设备并将 OEM 模式安装到设备上。
- OEM 将配置设备、安装任何应用程序、加载驱动程序等。
- 配置完成后,OEM 将准备将设备发送给最终用户,以便发货。系统将关闭/重启。[我假设这是用户执行的步骤,从而触发了整个情况。]
- 如果该设备是“金版”并且是更大批次设备的一部分,则该设备将被成像并克隆到其他设备。
- 准备好的设备已运送给最终用户。
- 用户收到准备好的设备,打开它,并进行 OOBE 设置(用户名、密码等)。
大多数提供 Ubuntu 安装的家庭或小型工作室都会使用 OEM 安装,无需任何映像。最终用户将收到设备,并在首次启动时提示他们创建帐户并配置所有内容。
oem
那么,当设备准备发货时,用户会发生什么?好吧,当设备准备发货时,它会启动一系列任务,删除 OEM 用户并准备环境(卸载软件包、更新 systemd 单元文件等)。所有准备脚本都位于 中/usr/sbin/oem-config*
,可以查看这里。然后用户将被带回到 Ubiquity(设置屏幕),在那里进行帐户设置。
坏消息是,所有这些任务都相当耗费写入资源。很多(最近)释放的块曾是所占用的空间/home/oem
现在将用于新用户的配置以及新系统和 OOBE 配置所做的更改。
综上所述,您在尝试恢复这些数据时会遇到很大困难。丢失的文件(相对)较小,因此在创建新帐户时很容易被覆盖。像photorec
/testdisk
和这样的工具autopsy
可能是您最好的选择,因为您已经尝试过了。如果这些工具无法恢复任何内容,那么除了一些人们通常无法使用的非常昂贵和/或非常强大的恢复工具之外,可能没有什么可以做的了。
你确实提到过/home/oem
文件以及文件夹。这可能会导致数据恢复工具有点困惑 - 文件不能有子文件,因此此时拼凑文件树的任何尝试都将失败。运行磁盘恢复工具时,请务必查找任何“孤立”文件或不属于特定目录的文件。
我将回到我的建议,从使用评论photorec
。它不像 那样专注于分区或文件系统级别的恢复testdisk
,而是尝试提取和恢复单个文件,而忽略目录或文件系统结构。这不是最理想的(路径和可能的文件名会丢失),但恢复原始数据总比什么都没有恢复要好。我怀疑它autopsy
有一个类似的“杂项”输出箱,但我对该工具不够熟悉,无法告诉您在哪里查找它。
如果photorec
无法恢复文件本身,则很可能在用户启动的个性化阶段,这些文件(大部分)已被覆盖。在这种情况下,最好聘请数据取证专家,他们可以使用必要的工具并知道如何恢复此类数据。
答案2
先说好消息
好消息是,如果删除了用户 OEM 并在其位置创建了新用户,则创建的骨架文件大小有望与从用户 OEM 中删除的骨架文件大小相同。然后,如果新用户除此之外没有创建任何新文件,则用户 OEM 创建的新文件有望仍位于磁盘上的废弃扇区中。希望唯一丢失的 OEM 文件是 OEM 骨架文件,只需在相对相同的位置用新用户骨架文件替换即可。下划线“希望”...
现在“但是……”
恢复数据肯定需要做很多工作。如果您对这些.odt
文件感兴趣,您首先需要找到一串字符来表示文件.odt
。例如:
$ ll Double*
-rw-rw-r-- 1 rick rick 192599 Mar 18 2018 Double suspend.odt
$ head "Double suspend.odt" -c 400
PK��rL^�2
'mimetypeapplication/vnd.oasis.opendocument.textPK��rL���A�#�#Thumbnails/thumbnail.png�PNG
因此我可以查找grep
我的硬盘上(但你不能使用此方法)所有带有字符串“ mimetypeapplication/vnd.oasis.opendocument.textPK
”的文件:
$ time grepall "mimetypeapplication/vnd.oasis.opendocument.textPK"
Binary file /usr/share/cups/data/form_english_in.odt matches
Binary file /usr/share/cups/data/form_russian_in.odt matches
Binary file /usr/share/doc/fonts-sil-abyssinica/documentation/AbyssinicaSILGraphiteFontFeatures.odt matches
Binary file /usr/lib/libreoffice/share/template/common/internal/idxexample.odt matches
(... SNIP ...)
60.47user 22.74system 2:23.48elapsed 58%CPU (0avgtext+0avgdata 20788maxresident)k
61233744inputs+0outputs (0major+8533minor)pagefaults 0swaps
real 2m25.881s
user 1m0.507s
sys 0m22.759s
现在,grep
您不必使用,而必须使用可以搜索硬盘上每个字节(无论它是否是文件的一部分)的工具。此封闭式问答中的工具就是一个例子:
还有其他工具:
最后,如果您刚刚编写了新的 Microsoft DOS 1.0 并丢失了汇编代码的唯一副本,您可以使用数据恢复服务。您可以谷歌搜索。最后考虑这篇文章: