保存在 /tmp 中不是真正的保存吗?

保存在 /tmp 中不是真正的保存吗?

例如,从 Firefox 打开邮件附件(无需事先保存);这是一个 Libre Office 文档,您可以对其进行编辑,然后按“保存”(而不是“另存为”)并关闭文本编辑器和浏览器。然后该文档就会消失,因为它默认存储在/tmp.至少在我的 Ubuntu 12.04 上是这样。

您认为这是正确的行为吗?该程序难道不应该至少提醒您,您并没有真正保存任何东西吗?或者有什么方法可以恢复文件(也在注销和/或重新启动后)?

答案1

对此我发现,当您选择在 Firefox 中使用外部程序打开文档时,会发生的情况是 Firefox 将程序下载到/tmp,然后使用下载的文件作为参数运行所选程序(读取“使用以下命令打开文件”)所选程序')。

如果您随后Save As从程序中保存该文件(不选择或等效项),它将在/tmp.

Firefox 关闭时会清理这些临时文件。因此,如果关闭 LibreOffice,但关闭 Firefox,则可以恢复该文件。然而,一旦 Firefox 关闭,该文件就会被删除。

在大多数(所有?)发行版上,该/tmp文件夹也会在重新启动时被清空(其中的文件/var/tmp应该保留更长时间)。

另请注意,此行为仅适用于使用外部程序“打开”文件。如果该文件是通过插件或其他方式在内部打开的,则该文件似乎/tmp未使用(该文件似乎与网页本身一起缓存在其他地方)。

更新

作为参考(除非有必要,否则我不建议这样做),您可以/tmp使用该选项在 Firefox 关闭时禁用删除文件browser.helperApps.deleteTempFileOnExit。这可以通过页面进行设置about:config(只需在地址栏中输入并按 Enter 键)。如果它存在并且是false,只需右键单击它并选择切换。否则,通过执行添加它右键单击->新建->布尔值,然后输入选项名称并选择 false。

/tmp在最近的基于 Debian 的系统上存储下次重新启动后的文件,请首先查看/etc/default/tmpfs并确保没有该RAMTMP=yes行。如果它被注释掉(#在开始时),这很好(如果它被设置,那么/tmp它将位于tmpfs内存中的文件系统上,并且不会存储在磁盘上)。接下来添加或更改TMPTIME中的行/etc/default/rcS。要/tmp无限期存储文件,您可以执行以下操作:

TMPTIME=infinite

或者您可以使用正数,而不是infinite将它们保留该天数,一旦它们的时间到了,它们将在下次重新启动时被删除。显然,如果该行被注释掉,请取消注释。

答案2

Firefox 有一个用于“打开”文件的缓存。每次关闭 Firefox 时都会清除此缓存。如果您使用 LO 打开该文件,然后关闭 Firefox,您会发现该文件将会消失。对于所有 Firefox 来说都是如此,无论它们是否存储在其中/tmp

答案3

您认为这是正确的行为吗?

我不得不说我不这么认为。但我有点偏见,因为这个怪癖几乎损失了六个小时的工作。

我认为任何让用户在没有警告的情况下做一些可能是灾难性的事情的 GUI 都是有缺陷的,无论其背后的设计决策多么“合乎逻辑”。当用户可以在类似的程序(如 Chrome)中执行完全相同的操作而不会产生任何不良影响时,尤其如此。

该程序难道不应该至少提醒您,您并没有真正保存任何东西吗?

嗯……也许带有复选框的弹出窗口“不再显示此消息”会很有用。更有用的是对 LibreOffice 和类似程序的一个小修复,警告用户他们正在保存的文件是否保存在 /tmp 或其他位置。我的意思是,如果您按“保存”,您希望文件保存在某个地方,对吧?

或者有什么方法可以恢复文件(也在注销和/或重新启动后)?

是的,如果你幸运的话。我从 USB Linux 安装启动计算机,并设法使用 extundelete 恢复文件。

答案4

您认为这是正确的行为吗?

当然这是正确的行为。它只发生在你没有选择的时候节省文件,而是选择打开它。在我看来,通常最好保存所有内容而不是打开。

该程序难道不应该至少提醒您,您并没有真正保存任何东西吗?

为什么?如果您想保存,为什么不选择下载文件?

或者有什么方法可以恢复文件(也在注销和/或重新启动后)?

没有。当它仍在 tmp 中时,您必须复制它。

相关内容