¿En qué parte del sistema de archivos debo almacenar los datos compartidos?

44

¿En qué parte del sistema de archivos Unix es la ubicación convencional para guardar datos no específicos del usuario, por ejemplo, datos compartidos a través de nfs o ftp, o copias de seguridad?

Obviamente podría crear y usar cualquier carpeta arbitraria (como / home / shared, / data o / var / data), pero realmente me pregunto si hay pautas de práctica "mejores" o "comunes". El Estándar de jerarquía del sistema de archivos no especifica una ubicación para los datos compartidos.

Para las copias de seguridad, tiendo a usar / var / backups, pero como escriben varios cronjobs, ¿realmente debería dejarse para su uso?

misterben
fuente

Respuestas:

29

Esta pregunta no parecen tener una respuesta clara en el estándar de jerarquía del sistema de archivos , que especifica /srvcomo "contener [ing] datos específicos del sitio que es servido por este sistema" . (3.16.1)

Este propósito principal de especificar esto es para que los usuarios puedan encontrar la ubicación de los archivos de datos para un servicio en particular , y para que los servicios que requieren un solo árbol para datos de solo lectura, datos de escritura y scripts

(mi énfasis)

Nota: 'Servido por el sistema' no necesariamente se refiere a Internet. Ni siquiera tiene que significar una red. Es aplicable incluso a un sistema compartido. Además, las palabras sitio y servicio deben entenderse en sus significados anteriores a Internet. Su sitio puede ser "el departamento de física" o "la oficina de finanzas".

Continúa diciendo:

En sistemas grandes puede ser útil estructurar / srv por contexto administrativo, como / srv / physics / www, / srv / compsci / cvs, etc. Esta configuración diferirá de un host a otro. Por lo tanto, ningún programa debe confiar en una estructura de subdirectorio específica de / srv existente o en los datos necesariamente almacenados en / srv. Sin embargo, / srv siempre debe existir en los sistemas compatibles con FHS y debe usarse como la ubicación predeterminada para dichos datos.

Por lo tanto, debe estructurar aún más sus datos en directorios como /srv/nfs, /srv/backupetc.

También debo mencionar que pocas personas hacen esto más. Pero no hay una buena razón por la que no lo hacen. El estándar de ninguna manera está desactualizado.

/varse usa tradicionalmente para cosas como bobinas de impresión y archivos de registro, pero también lo usa el servidor web Apache (de todos modos en los sistemas Debian - SUSE use / srv); No parece haber consenso sobre si /vares un directorio apropiado para datos compartidos. Pero si decides usarlo, no te arrepentirás, estoy seguro.

Tenga en cuenta también: la respuesta de Karthick de ninguna manera es incorrecta. El FHS dice / srv "debe usarse como la ubicación predeterminada para dichos datos", pero el estándar deja espacio para su propia preferencia, dependiendo de cómo interprete los términos.

Stefano Palazzo
fuente
44
Tenga en cuenta que Debian (y Red Hat) comenzaron a colocar los archivos de Apache /var/www, antes /srv/formaban parte del FHS.
mattdm
Una buena explicación, gracias, aunque parece que la respuesta a la pregunta es "no hay realmente un estándar que realmente se siga". Tal vez debería haber, tal vez realmente no importa.
misterben
Bueno, siempre debes romper las reglas cuando tengas buenas razones para hacerlo. Pero calculo que este estándar se sigue meticulosamente en muchas implementaciones a gran escala.
Stefano Palazzo
Las personas que deseen pasar a un estándar común, deberían encontrar esta respuesta inequívocamente correcta según el FHS.
Jeremy
13
  • Los datos no específicos del usuario pueden almacenarse en / usr / local / var para que no vuelvan a terminar en un recurso compartido de red nuevo.
  • Todo lo que no esté bajo ../local/ .. puede terminar en un recurso compartido nfs, por lo tanto, si desea descargar datos de un recurso compartido nfs, y asegúrese de que estén almacenados localmente en el disco duro de la máquina.
  • Entonces debe elegir una ruta con ... / local / ... en ella ... el resto depende de la naturaleza de los datos, del tipo de datos. Podría ser / local / var o / local / tmp, etc. .

Jerarquía del sistema de archivos:
texto alternativo

También eche un vistazo a esto

karthick87
fuente
1
Si bien esta es una representación útil del FHS, aún no sugiere una ubicación estándar para un almacén de datos compartido.
misterben
La FSH establece que: / usr es datos compartibles de solo lectura. Eso significa que / usr debe poder compartirse entre varios hosts compatibles con FHS y no debe escribirse en ellos . Hmmm, entonces parece depender de cuál es el propósito de tu parte.
htorque
@htorque Me estoy inclinando a pensar que en algún lugar bajo / var es más apropiado para compartir archivos, como sugirió en su respuesta (ahora eliminada).
misterben
1
Eliminé mi respuesta, porque el FHS también dice que: Las aplicaciones generalmente no deben agregar directorios al nivel superior de / var. Dichos directorios solo deben agregarse si tienen alguna implicación en todo el sistema, y ​​en consulta con la lista de correo de FHS. - ¡el FHS simplemente no quiere que compartas datos (editables)! : P
htorque
Gracias, una descripción general útil, y como la otra respuesta, realmente sirve para documentar que no hay una respuesta definitiva, lo cual es útil en sí mismo.
misterben
5

No creo que FHS defina ningún lugar para los datos compartidos de los usuarios. Es hasta los usuarios donde desean almacenar los datos compartidos. Yo suelo usar /usr/local/sharedo /home/shared.

binW
fuente
1

He visto que /exportsolía servir con nfs, y /mntsolía montar un recurso compartido nfs localmente, en un entorno corporativo, como se sugiere en la documentación de NFS, un estándar que sospecho que originalmente vino de Sun OS, luego renombrado Solaris.

El /etc/exportsarchivo nombra los volúmenes exportados y el /exportsdirectorio los sirve a usuarios remotos, que los montan /mnt. El host del servidor también puede montar estos mismos recursos compartidos /mntutilizando el mismo demonio nfs para el uso de cualquier cliente o proceso que se ejecute localmente en el servidor, para mantener la compatibilidad con cualquier host remoto y tal vez conservar la funcionalidad de nivelación de carga, cuotas, etc.

Eso es lo más parecido a un 'estándar' que se pone. Tenga en cuenta que /exportno está en el FHS, por /exportlo tanto, se agregó de forma independiente, por lo que presumiblemente nadie está contento /srv. Probablemente debido a la posible confusión con los "servicios" que se ejecutan como demonios en lugar de volúmenes "servidos". /exportse nombra inequívocamente con pocas posibilidades de confusión. Nunca veo nada adentro /srv.

Cheryljosie
fuente