Mal*_*ous 8 configuration directory-structure home xdg
我正在设计一个处理扫描文档的 GUI 应用程序。它允许在保存/导出扫描之前对其进行操作,因此它需要在处理每个扫描页面时临时存储每个扫描页面的数据。
数据量非常大(即使压缩也经常超过 100MB),因此将其存储在内存中是不切实际的。扫描大量页面也是一项繁重的工作,因此应将扫描结果保存在磁盘上的“工作区”中,以便即使在重新启动系统后也可以重新打开应用程序,并且先前扫描的数据将在那里准备好继续处理。
我不太确定我应该在哪里保存这个重要但临时的数据:
/tmp/ 不好,因为数据应该在退出并重新打开应用程序后保留,甚至在重新启动后保留。$HOME/.config/appname/ 不是真的正确,因为它不是我要保存的配置数据。$HOME/.local/share/不正确,因为XDG 规范说这是为了覆盖存储在/usr/share/其中的图标之类的东西,并且永远不会放入“全局”扫描/usr/share/。$HOME/.cache 很接近,但这不是缓存数据,如果用户在扫描 100 页后被删除并且不得不重新扫描所有内容,那么用户会非常恼火。$HOME/.local/lib/appname没有出现在任何规范中,但如果.local意味着用户本地(lib来自/var/lib/使用)可能没问题。如果它意味着机器本地,那么它不适合,因为用户应该能够登录到机器高速扫描仪,使用此应用程序进行扫描,注销,然后在普通 PC 上登录并打开应用程序以查看他们刚刚扫描的内容 - 即数据应在注销时通过网络保留,并且~$HOME/.cache不需要在机器之间共享,所以$HOME/.local可能也不是 - 我不确定。那么对于存储此类数据的最合适位置有什么建议吗?
编辑:只是为了澄清,这是每个用户的数据,并且应用程序以普通用户身份运行,因此将其放入/var/可能不正确,因为您必须处理运行应用程序的多个用户,除了没有写入的普通用户访问那里。
小智 1
我有一个 GUI 应用程序(使用 wxPython),它从其他地方导入数据,然后处理两到七个数据文件以生成 CSV 文件、PDF 报告以及(如果选择)许多其他报告格式。我将源数据文件(直到存档)和报告存储在 $HOME/Documents 的目录结构中。这很有效,但你必须向用户强调,当他们创建目录名称时,要让他们敏感,而不是给出诸如 qwerty、fred1、abc123 等名称。