![是否可以从磁盘/页面缓存中恢复未刷新的数据?](https://linux22.com/image/819242/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BB%8E%E7%A3%81%E7%9B%98%2F%E9%A1%B5%E9%9D%A2%E7%BC%93%E5%AD%98%E4%B8%AD%E6%81%A2%E5%A4%8D%E6%9C%AA%E5%88%B7%E6%96%B0%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
在 Ubuntu 中,我使用 将一些文件移动到 USB 棒mv dir/file /media/7EXXX/swap/
。完成此操作后,我忘记在物理移除 USB 棒之前“安全移除”。现在,file
USB 中不显示。是否可以检索尚未写入 USB 的数据(我假设这些数据驻留在页面/磁盘缓存中)。
答案1
简单的回答是“不,很抱歉,但是你的数据已经丢失了” :(
尽快关机(甚至可能不干净地关机)并使用 LiveCD 等来挂载源分区并使用testdisk
/photorec
等恢复文件。
请记住下次添加,; sync
以便当提示再次出现时您知道文件已写入 USB。
一般来说,几乎不可能从文件缓存中检索数据,除非您能以某种方式找到“页面缓存”过程是什么,否则就会出现其他问题。
/proc/$pid/mem
您可以使用诸如 -- 之类的调试器检查并转储进程内存的内容,gdb
但进程必须能够被 SIGSTOPped。因此:将文件缓存转储到磁盘文件以进行分析并可能使用 、 等进行恢复的要求testdisk
如下photorec
:
- 找到难以捉摸的“页面缓存”过程
- 确保它可以被阻止
- 将其内存转储到磁盘
- 无需重启
在内核开发方面有丰富经验的人可能会编写一些代码来完成此操作……