在 unix 文件系统中,保存非用户特定数据的常规位置在哪里,例如通过 nfs 或 ftp 共享的数据或备份?
显然,我可以创建和使用任意文件夹(例如 /home/shared、/data 或 /var/data),但我真的很想知道是否有任何“最佳”或“常见”实践指南。文件系统层次标准没有指定共享数据的位置。
对于备份,我倾向于使用 /var/backups,但由于有多个 cronjobs 向其写入数据,因此它真的应该留给他们使用吗?
答案1
这个问题做似乎有一个明确的答案文件系统层次标准,指定/srv
为“包含由该系统提供的特定站点数据”。 (3.16.1)
指定这一点的主要目的是用户可以找到特定服务的数据文件,这样那些需要单一树来存储只读数据、可写数据和脚本的服务
(我强调)
注意:“由系统提供服务”不一定指互联网。它甚至不一定意味着网络。它甚至适用于共享系统。此外,地点和服务应以互联网出现之前的含义来理解。您的站点可以是“物理系”或“财务办公室”。
它继续说:
在大型系统中,按管理上下文来构造 /srv 会很有用,例如 /srv/physics/www、/srv/compsci/cvs 等。此设置因主机而异。因此,任何程序都不应依赖于 /srv 的特定子目录结构存在或数据必须存储在 /srv 中。但是,/srv 应始终存在于符合 FHS 标准的系统中,并应用作此类数据的默认位置。
/srv/nfs
因此,您应该在诸如/srv/backup
等目录中进一步构建数据。
我还应该提到,现在很少有人这样做了。但他们没有理由不这样做。这个标准绝不是过时的。
/var
传统上用于打印假脱机和日志文件等,但它也被 Apache Web 服务器使用(无论如何在 Debian 系统上 - SUSE 使用 /srv);对于是否/var
是共享数据的合适目录似乎没有达成共识。但如果你决定使用它,我敢肯定你不会后悔。
还请注意:Karthick 的回答绝非错误。FHS 表示 /srv“应作为此类数据的默认位置”,但标准为您自己的偏好留有一定的空间,具体取决于您如何解释这些术语。
答案2
- 非用户特定数据可以存储在在 /usr/本地/var这样它就不会再次出现在网络共享中。
- 任何不在 ../local/.. 下的内容都可以最终放在 nfs 共享上,因此如果您想从 nfs 共享下载数据,请确保它们本地存储在机器硬盘上。
- 然后您应该选择一个包含.../local/..的路径....其余的取决于数据的性质和类型。它可以是/local/var 或/local/tmp 等。
文件系统层次结构:
答案3
我认为 FHS 没有为共享用户数据定义任何位置。用户可自行决定将共享数据存储在何处。我通常使用/usr/local/shared
或/home/shared
。
答案4
我曾经见过/export
使用 nfs 提供服务,并/mnt
在公司环境中本地挂载 nfs 共享,正如 NFS 文档中所建议的那样,我怀疑该标准最初来自 Sun OS,后来更名为 Solaris。
该/etc/exports
文件命名导出的卷,/exports
目录将它们提供给远程用户,远程用户将它们安装在 上/mnt
。服务器主机还可以/mnt
使用相同的 nfs 守护程序将这些相同的共享安装在 上,以供服务器上本地运行的任何客户端或进程使用,以保持与任何远程主机的兼容性,并可能保留负载均衡、配额等功能。
这已经非常接近“标准”了。请注意,/export
不在 FHS 中,因此/export
是独立添加的,所以大概没人对 感到满意/srv
。可能是因为可能会与作为守护进程运行的“服务”而不是“服务”卷混淆。/export
名称明确,几乎不会造成混淆。我从未在 中看到任何东西/srv
。