我应该在哪里存储我的应用程序文件(数据、缓存、日志、崩溃等)

我应该在哪里存储我的应用程序文件(数据、缓存、日志、崩溃等)

尽管我对这个主题做了一些研究,但我无法获得我想要的确切信息。其实没有具体透露,每个人的做法都不同。

为了:文件系统层次结构标准

我应该将我的文件存储在:

  • 临时文件: /var/temp/app_name/*或者/temp/app_name/*

  • 缓存文件: /var/cache/app_name/*

  • 配置文件: ~/.config/app_name/*

  • 日志文件: /var/log/app_name/*

  • 数据文件(数据库等): ???

问题一:对于最新的系统来说,这是正确的方法吗?

对于XDG标准在这里解释:

  • 临时文件: ???或者/temp/app_name/*

  • 缓存文件: ~/.cache/app_name/*

  • 配置文件: ~/.config/app_name/*

  • 日志文件: ???

  • 数据文件(数据库等): ???

我不明白为什么我们将缓存文件存储在~/.cache.这对我来说没有任何意义,因为有一个名为的内置缓存文件夹/var/cache

在这种情况下,我很困惑。在我调查的每个地方,都有不同的方法。

问题2:对于纯 Linux 发行版(不使用 $XDG)来创建应用程序,我们应该将文件(数据、日志、临时文件、配置等)放在哪里?

Q3:有些应用程序使用Linux结构,但有些应用程序使用LinuxXDG结构。他们如何选择这个?根据什么情况?$XDG如果我们使用它们,它们会使用环境变量吗?

根据以上情况,我的env | grep -i "XDG"输出:

XDG_VTNR=1
XDG_SESSION_ID=1
XDG_DATA_DIRS=/home/furkan/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0

附: 我不知道我所展示的部分 ???

答案1

您的部分困惑可能是用户应用程序和系统应用程序之间的区别。

因此,例如,apache它不是作为最终用户运行(“Harry”通常不运行 Apache;它是从系统启动脚本运行的 - systemd 或 init 等)。这类应用程序通常会遵循文件系统标准,并将日志文件存储在/var/log、配置文件/etc等中。

类似地,系统管理员执行的旨在root影响整个机器的命令(例如aptyum)也遵循文件系统标准。

然而,设计为由最终用户执行的应用程序(例如网络浏览器和其他桌面应用程序)遵循XDG 标准。这里“哈利”有自己的个人缓存,与“朱莉”不同;他们访问不同的网站,因此缓存了不同的页面。类似地,Harry 可能会配置与 Julie 不同的桌面,因此配置将位于该~/.config区域中。

某些位置(例如/tmp)被设计为由所有用户共享,因此即使桌面应用程序也可以使用它们......但即使在这里有时/run/user/也会使用更现代的结构。

相关内容