Wo im Dateisystem soll ich freigegebene Daten speichern?

44

Wo im Unix-Dateisystem befindet sich der herkömmliche Speicherort für nicht benutzerspezifische Daten, z. B. Daten, die über NFS oder FTP gemeinsam genutzt werden, oder für Sicherungen?

Ich könnte natürlich jeden beliebigen Ordner erstellen und verwenden (z. B. / home / shared / data oder / var / data), aber ich frage mich wirklich, ob es "beste" oder "allgemeine" Übungsrichtlinien gibt. Der Dateisystem-Hierarchiestandard gibt keinen Speicherort für freigegebene Daten an.

Für Backups verwende ich in der Regel / var / backups, aber wenn mehrere Cronjobs darauf schreiben, sollte es wirklich für ihre Verwendung übrig bleiben?

Herrben
quelle

Antworten:

29

Diese Frage ist offenbar eine klare Antwort in dem haben , Filesystem Hierarchy Standard , die angibt , /srvwie „enthält [ing] ortsspezifische Daten , die von diesem System bedient wird“ . (3.16.1)

Der Hauptzweck dieser Angabe besteht darin, dass Benutzer den Speicherort der Datendateien für einen bestimmten Dienst finden und Dienste, die einen einzigen Baum für schreibgeschützte Daten, beschreibbare Daten und Skripts benötigen

(meine Betonung)

Hinweis: "Vom System bereitgestellt" bezieht sich nicht unbedingt auf das Internet. Es muss nicht einmal ein Netzwerk bedeuten. Es ist sogar auf ein gemeinsames System anwendbar. Die Worte Ferner Website und Service sollten in ihrem Vor-Internet - Bedeutungen verstanden werden. Ihr Standort kann "die Physikabteilung" oder "das Finanzamt" sein.

Es heißt weiter:

Auf großen Systemen kann es nützlich sein, / srv nach Verwaltungskontext zu strukturieren, z. B. / srv / physics / www, / srv / compsci / cvs usw. Diese Konfiguration ist von Host zu Host unterschiedlich. Daher sollte kein Programm auf eine bestimmte Unterverzeichnisstruktur von / srv angewiesen sein oder Daten, die unbedingt in / srv gespeichert werden müssen. / Srv sollte jedoch immer auf FHS-kompatiblen Systemen vorhanden sein und als Standardspeicherort für solche Daten verwendet werden.

Daher sollten Sie Ihre Daten weiter in Verzeichnissen strukturiert wie /srv/nfs, /srv/backupund so weiter.

Ich sollte auch erwähnen, dass dies nur noch wenige Leute tun. Aber es gibt keinen guten Grund, warum sie es nicht tun. Der Standard ist keineswegs veraltet.

/varwird traditionell für Dinge wie Druckspools und Protokolldateien verwendet, wird aber auch vom Apache-Webserver verwendet (auf Debian-Systemen sowieso - SUSE use / srv); Es scheint kein Konsens darüber zu bestehen, ob /vares ein geeignetes Verzeichnis für gemeinsam genutzte Daten gibt. Aber wenn Sie sich dafür entscheiden, es stattdessen zu verwenden, werden Sie es nicht bereuen, da bin ich mir sicher.

Beachten Sie auch: Karthicks Antwort ist keineswegs falsch. Das FHS sagt / srv "sollte als Standardspeicherort für solche Daten verwendet werden", aber der Standard lässt etwas Raum für Ihre eigenen Vorlieben, abhängig davon, wie Sie die Begriffe interpretieren.

Stefano Palazzo
quelle
4
Beachten Sie, dass Debian (und Red Hat) damit begonnen haben, Apache-Dateien einzuspielen /var/www, bevor dies /srv/Teil des FHS war.
mattdm
Eine gute Erklärung, danke, obwohl die Antwort auf die Frage zu sein scheint: "Es gibt nicht wirklich einen Standard, der tatsächlich befolgt wird". Vielleicht sollte es etwas geben, vielleicht spielt es wirklich keine Rolle.
Misterben
Nun, Sie sollten immer die Regeln brechen, wenn Sie guten Grund dazu haben. Ich schätze jedoch, dass dieser Standard in vielen großen Bereitstellungen genau befolgt wird.
Stefano Palazzo
Menschen, die zu einem gemeinsamen Standard übergehen möchten, sollten diese Antwort basierend auf FHS eindeutig richtig finden.
Jeremy
13
  • Nicht benutzerspezifische Daten können in / usr / local / var gespeichert werden, damit sie nicht erneut auf einer Newtwork-Freigabe landen.
  • Alles, was sich nicht unter ../local/ .. befindet, kann auf einer nfs-Freigabe landen. Wenn Sie also Daten von einer nfs-Freigabe herunterladen möchten, müssen Sie sicherstellen, dass sie lokal auf der Festplatte des Computers gespeichert sind.
  • Dann sollten Sie einen Pfad mit ... / local / .. darin auswählen. Der Rest hängt von der Art der Daten und deren Typ ab. Dies kann / local / var oder / local / tmp usw. Sein .

Dateisystemhierarchie:
Alt-Text

Schauen Sie sich das auch an

karthick87
quelle
1
Dies ist zwar eine nützliche Darstellung des FHS, es wird jedoch kein Standardspeicherort für einen gemeinsam genutzten Datenspeicher vorgeschlagen.
Misterben
FSH gibt an, dass: / usr nur lesbare Daten sind. Das bedeutet, dass / usr zwischen verschiedenen FHS-kompatiblen Hosts geteilt und nicht beschrieben werden darf . Hmmm, es scheint also davon abzuhängen, was der Zweck Ihrer Freigabe ist.
htorque
@htorque Ich neige dazu, irgendwo unter / var zu denken, dass es am besten für eine Dateifreigabe geeignet ist, wie Sie in Ihrer (jetzt gelöschten) Antwort vorgeschlagen haben.
Misterben
1
Ich habe meine Antwort gelöscht, da die FHS auch Folgendes angibt: Anwendungen dürfen im Allgemeinen keine Verzeichnisse zur obersten Ebene von / var hinzufügen. Solche Verzeichnisse sollten nur hinzugefügt werden, wenn sie systemweite Auswirkungen haben, und in Absprache mit der FHS-Mailingliste. - Die FHS möchte einfach nicht, dass Sie (beschreibbare) Daten teilen! : P
htorque
Vielen Dank, eine nützliche Übersicht und wie die andere Antwort dient sie wirklich dazu zu dokumentieren, dass es keine endgültige Antwort gibt, was an sich hilfreich ist.
Misterben
5

Ich glaube nicht, dass FHS irgendeinen Ort für geteilte Benutzerdaten definiert. Es liegt an den Benutzern, wo sie dort gemeinsam genutzte Daten speichern möchten. Ich benutze normalerweise /usr/local/sharedoder /home/shared.

binW
quelle
1

Ich habe gesehen, dass /exportfrüher mit nfs gedient und /mnteine nfs-Freigabe lokal in einer Unternehmensumgebung gemountet wurde, wie in der NFS-Dokumentation vorgeschlagen, einem Standard, von dem ich vermute, dass er ursprünglich aus Sun OS stammte und der später in Solaris umbenannt wurde.

Die /etc/exportsDatei benennt die exportierten Volumes und das /exportsVerzeichnis stellt sie Remotebenutzern zur Verfügung, auf denen sie bereitgestellt werden /mnt. Der Server-Host kann diese Freigaben auch bereitstellen, wenn er /mntdenselben nfs-Dämon für die Verwendung von Clients oder Prozessen verwendet, die lokal auf dem Server ausgeführt werden, um die Kompatibilität mit allen Remote-Hosts und möglicherweise die Funktionalität von Load Leveling, Kontingenten usw. zu gewährleisten.

Das kommt einem "Standard" so nahe, wie es nur geht. Beachten Sie, dass /exportnicht in der FHS daher /exporteigenständig aufgenommen wurde, so dass vermutlich niemand damit zufrieden ist /srv. Wahrscheinlich wegen möglicher Verwechslung mit "Diensten", die als Daemons ausgeführt werden und nicht als "bediente" Datenträger. /exportist eindeutig benannt mit geringer Verwechslungsgefahr. Ich sehe nie etwas in /srv.

cheryljosie
quelle