将持久数据存储到 /var/app_name/ 是否安全

将持久数据存储到 /var/app_name/ 是否安全

我想创建一个系统范围的目录,其中包含应用程序特定的(读写)数据(如日志文件、配置和其他应用程序特定的元数据)。

在阅读了更多有关 Linux 文件系统的内容后,我考虑使用/var/app_name/,但后来我发现,某些子目录是临时的(在重新启动期间不会持久,例如runlogtmp)。

这有多重要?我的意思是,我应该使用另一个目录(例如/home/app_name/)还是使用/var/app_name/就可以?

答案1

来自文件系统层次结构标准

应用程序通常不得将目录添加到 /var 的顶层。仅当此类目录具有某些系统范围的含义时才应添加,并且应咨询 FHS 邮件列表。

您应该使用/etc/app_name/它来存储程序的配置文件和其他内容,并/var/log/app_name/存储其日志文件。

对于应用程序使用的数据,您可以存储:

  • /var/lib/app_name/持久数据和元数据中
  • /var/cache/app_name/任何可以安全删除的应用程序缓存中
  • /var/spool/app_name/在等待处理的数据中

确实不使用 /home/app_name/保留给用户的 homedir应用程序名称。如果您的程序需要创建一个特定的用户来运行,那么这就是它的位置。

关于评论中的问题:Linux 不会自动删除您放入的任何内容的旋转日志/var/log/。事实上,系统管理员经常遇到相反的问题,即日志填满了所有空间......因此,由您决定删除或轮换日志文件;这是通过logrotate自定义 cron 作业完成的。

答案2

它应该可以安全地用于/var/app_name存储名为 的应用程序的持久数据app_name

例如,在我目前使用的系统上,PostgreSQL 和 MySQL (MariaDB) 的默认数据库目录是/var/postgresql和。/var/mysql

/var/tmp应该仅用于临时文件,但系统不太可能清除此目录(例如,在重新启动时,与 不同/tmp)。 /var/run最常用于存储 PID 文件和命名套接字。

我会避免最常与个人帐户目录相关的内容/home/app_name/home

也可以看看:https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

应用程序可以选择将其配置文件存储在 中/etc,将其日志文件存储在 中/var/log,将数据存储在 中/var/app_name。在我上面用作示例的 PostgreSQL 和 MariaDB 中,它们将除系统启动挂钩之外的所有内容都存储在/var.

相关内容