web-dev-qa-db-fra.com

Où dois-je stocker les données partagées dans le système de fichiers?

Où dans le système de fichiers unix se trouve l’emplacement classique pour enregistrer des données non spécifiques à un utilisateur, par exemple des données partagées via nfs ou ftp, ou des sauvegardes?

Je pourrais évidemment créer et utiliser n’importe quel dossier arbitraire (tel que/home/shared,/data ou/var/data), mais je me demande vraiment s’il existe des directives de "meilleure" pratique ou "commune". Le norme de hiérarchie du système de fichiers ne spécifie pas d'emplacement pour les données partagées.

Pour les sauvegardes, j’ai tendance à utiliser/var/backups, mais comme plusieurs cronjobs y écrivent, faut-il vraiment les laisser à leur usage?

45
misterben

Cette question semble avoir une réponse claire dans le norme de hiérarchie du système de fichiers , qui spécifie /srv comme "contient [ ing] des données spécifiques au site qui sont desservies par ce système ". (3.16.1)

Le but principal de cette spécification est que les utilisateurs puissent trouver l'emplacement des fichiers de données pour un service donné , de sorte que les services nécessitant une seule arborescence pour les données en lecture seule, les données en écriture et les scripts

(mon emphase)

Remarque: "Servi par le système" ne fait pas nécessairement référence à Internet. Cela ne signifie même pas nécessairement un réseau. Cela s'applique même à un système partagé. De plus, les mots site et service doivent être compris dans leur signification antérieure à Internet. Votre site peut être "le département de physique" ou "le bureau des finances".

Il se poursuit:

Sur les grands systèmes, il peut être utile de structurer/srv en fonction du contexte administratif, tel que/srv/physics/www,/srv/compsci/cvs, etc. Cette configuration diffère d’un hôte à l’autre. Par conséquent, aucun programme ne doit s'appuyer sur une structure de sous-répertoire spécifique de/srv existant ou sur des données nécessairement stockées dans/srv. Toutefois,/srv doit toujours exister sur les systèmes conformes à FHS et doit être utilisé comme emplacement par défaut pour ces données.

Vous devez donc structurer davantage vos données dans des répertoires tels que /srv/nfs, /srv/backup et ainsi de suite.

Je devrais aussi mentionner que peu de gens le font plus. Mais il n'y a pas de bonne raison pour qu'ils ne le fassent pas. La norme n'est en aucun cas obsolète.

/var est traditionnellement utilisé pour des tâches telles que les spools d'impression et les fichiers journaux, mais il est également utilisé par le serveur Web Apache (de toute façon sur les systèmes Debian - SUSE utilise/srv); Il ne semble pas y avoir de consensus sur le fait de savoir si /var est un répertoire approprié pour les données partagées. Mais si vous décidez de l'utiliser à la place, vous ne regretterez pas, j'en suis sûr.

Remarquez également: la réponse de Karthick n’est en aucun cas fausse. La FHS indique que/srv "devrait être utilisé comme emplacement par défaut pour ces données", mais la norme laisse une marge à votre préférence, en fonction de la manière dont vous interprétez les termes.

30
Stefano Palazzo
  • Les données non spécifiques à l'utilisateur peuvent être stockées dans /usr/local/var , de sorte qu'elles ne se retrouvent plus dans un partage newtwork.
  • Tout ce qui ne se trouve pas sous ../local/ .. est autorisé à se retrouver sur un partage nfs. Si vous souhaitez télécharger des données à partir d'un partage nfs, assurez-vous qu'elles sont stockées localement sur le disque dur de la machine.
  • Ensuite, vous devriez choisir un chemin avec .../local/.. dedans ... le reste dépend de la nature des données, du type de celles-ci.Il peut être/local/var ou/local/tmp etc. .

Hiérarchie du système de fichiers:
alt text

Jetez également un coup d'oeil à cela

13
karthick87

Je ne pense pas que FHS définisse un lieu pour les données utilisateur partagées. C'est aux utilisateurs où ils veulent stocker leurs données partagées. J'utilise habituellement /usr/local/shared ou /home/shared.

5
binW

J'ai déjà vu /export utilisé avec nfs et /mnt utilisé pour monter un partage nfs localement, dans un environnement d'entreprise, comme suggéré dans la documentation NFS, une norme qui, à mon avis, provenait de Sun OS, plus tard renommée Solaris.

Le fichier /etc/exports nomme les volumes exportés et le répertoire /exports les fournit aux utilisateurs distants, qui les montent sur /mnt. L'hôte du serveur peut également monter ces mêmes partages sur /mnt en utilisant le même démon nfs pour l'utilisation de clients ou de processus s'exécutant localement sur le serveur, afin de conserver la compatibilité avec tous les hôtes distants et éventuellement de conserver les fonctionnalités de nivellement de la charge, de quotas, etc.

C'est aussi proche d'une "norme" que cela devient. Notez que /export ne figure pas dans la FHS, par conséquent, /export a été ajouté indépendamment. Par conséquent, personne n'est probablement satisfait de /srv. Probablement à cause d'une confusion potentielle avec les "services" fonctionnant comme des démons plutôt que des volumes "servis". /export porte un nom non équivoque avec peu de risque de confusion. Je ne vois jamais rien dans /srv.

1
cheryljosie