Répertoires standard et / ou communs sur les systèmes d'exploitation Unix / Linux

25

Venant du monde Windows, j'ai trouvé la majorité des noms de répertoires de dossiers assez intuitifs:

  • \Program Files contient des fichiers utilisés par les programmes (surprise!)

  • \Program Files (x86) contient des fichiers utilisés par des programmes 32 bits sur des systèmes d'exploitation 64 bits

  • \Users(anciennement Documents and Settings) contient les fichiers des utilisateurs, c'est-à-dire les documents et les paramètres

    • \Users\USER\Application Data contient des données spécifiques à l'application

    • \Users\USER\Documents contient des documents appartenant à l'utilisateur

  • \Windows contient des fichiers qui appartiennent au fonctionnement de Windows lui-même

    • \Windows\Fonts stocke les fichiers de polices (surprise!)

    • \Windows\Temp est un répertoire temporaire global

etc. Même si je n'avais aucune idée de ce que faisaient ces dossiers, je pouvais deviner avec une bonne précision d'après leurs noms.

Maintenant, je jette un œil sur Linux et je suis assez confus sur la façon de trouver mon chemin dans le système de fichiers.

Par exemple:

  • /bincontient des binaires. Mais pour le faire /sbin, /usr/bin, /usr/sbinet probablement plus que je ne sais pas. Lequel est lequel?? Quelle est la différence entre eux? Si je veux créer un fichier binaire et le mettre à l’échelle du système, où dois-je le mettre?

  • /mediacontient des systèmes de fichiers multimédias externes. Mais il en va de même /mnt. Et aucun d'eux ne contient quoi que ce soit sur mon système pour le moment; tout semble être /dev. Quelle est la différence? Où sont les autres partitions sur mon disque dur, comme le C:et D:qui étaient sous Windows?

  • /homecontient les fichiers utilisateur et les paramètres. C'est beaucoup intuitif, mais alors, qu'est-ce qui est censé entrer /usr? Et comment se /rootfait-il qu'il soit toujours séparé, même s'il s'agit d'un utilisateur avec des fichiers et des paramètres?

  • /libcontient des bibliothèques partagées, comme des DLL. Mais il en va de même /usr/lib. Quelle est la différence?

  • Qu'est - ce que c'est/etc ? Cela signifie-t-il vraiment «et cetera», ou autre chose? Quels types de fichiers doivent y entrer - globaux ou locaux? Est-ce un fourre-tout pour des choses que personne ne savait où mettre, ou y a-t-il un cas d'utilisation particulier?

  • Quels sont /opt, /procet /var? Que représentent-ils et à quoi servent-ils? Je n'ai rien vu de tel dans Windows *, et je n'arrive pas à comprendre à quoi ils pourraient servir.

Si quelqu'un peut penser à d'autres endroits standard qu'il serait bon de connaître, n'hésitez pas à l'ajouter à la question; j'espère que cela peut être une bonne référence pour des gens comme moi, qui commencent à se familiariser avec les systèmes * nix.

* OK, c'est un mensonge. J'ai vu des choses similaires dans WinObj, mais évidemment pas de façon régulière. Je ne sais toujours pas ce que cela fait sur Linux, cependant.

Mehrdad
la source
1
Merci d'avoir gardé un bon esprit d'apprentissage. Ce sujet est souvent controversé. Voir ma réponse à cette question pour quelques explications supplémentaires sur les différences fondamentales entre les structures de système de fichiers dans Windows vs Linux.
Caleb
Ne pensez pas à "usr" comme l'abréviation de "user" mais à "Unix System Resources" (même si c'est probablement un backronym car il contenait des répertoires d'utilisateurs il y a des années) ( linux-training.be/files/books/html /fun/ch09s08.html ).
lgeorget
Il ne sert à rien d'essayer de justifier la dénomination du répertoire cryptique Unix / Linux / etc contre Windows (ou Mac OS X). C'est comme ça.
Andrew Wolfe
Depuis 2017, la structure des dossiers Windows est un gâchis complet. C:\Program Files, C:\ProgramData, %HOME%\AppData\Local, %HOME%\AppData\LocalLow, C:\Windows\SystemApps... Tous les exemples où l' on peut trouver executables dans Windows. Et je ne parlerai même pas des fichiers de configuration et du registre, je ne veux pas être encore plus déprimé. PS: je travaille principalement sous Windows.
rsenna

Réponses:

29

Les distributions Linux utilisent le FHS: http://www.pathname.com/fhs/pub/fhs-2.3.html

Vous pouvez également essayer man hier.

Je vais essayer de résumer vos réponses du haut de ma tête, mais je vous suggère fortement de lire la FHS:

  • / bin est pour les binaires système non superutilisateur
  • / sbin est pour les binaires du système superutilisateur (root)
  • / usr / bin & / usr / sbin sont pour les binaires partagés non critiques non-superutilisateur ou super-utilisateur, respectivement
  • / mnt sert à monter temporairement une partition
  • / media permet de monter plusieurs supports amovibles à la fois
  • / dev contient les fichiers de votre périphérique système; c'est une longue histoire :)
  • Le dossier / usr et ses sous-dossiers peuvent être partagés avec d'autres systèmes, afin qu'ils aient accès aux mêmes programmes / fichiers installés en un seul endroit. Étant donné que / usr se trouve généralement sur un système de fichiers distinct, il ne contient pas de fichiers binaires nécessaires pour mettre le système en ligne.
  • / root est séparé car il peut être nécessaire de mettre le système en ligne sans monter d'autres répertoires qui peuvent se trouver sur des partitions / disques durs / serveurs séparés
  • Oui, / etc signifie "et cetera". Les fichiers de configuration du système local y sont stockés.
  • / opt est un endroit où vous pouvez installer des programmes que vous téléchargez / compilez. De cette façon, vous pouvez les garder séparés du reste du système, avec tous les fichiers en un seul endroit.
  • / proc contient des informations sur le noyau et les processus en cours d'exécution
  • / var contient des fichiers de taille variable comme les journaux, le courrier, les pages Web, etc.

Pour accéder à un système, vous n'avez généralement pas besoin de / var, / opt, / usr, / home; certains des répertoires potentiellement les plus importants d'un système.

L'un de mes favoris, que certaines personnes n'utilisent pas, est / srv. C'est pour les données qui sont hébergées via des services comme http / ftp / samba. J'ai vu / var beaucoup utilisé pour cela, ce qui n'est pas vraiment son but.

bhinesley
la source
Bon aperçu des questions spécifiques. Notez que certaines distributions sont utilisées /home/users/usernamepour les utilisateurs et /home/services/servicenamepour ce que vous mentionnez /src. Je pense que cela fonctionne mieux dans la mesure où il est plus polyvalent à partitionner. Vous pouvez l'avoir sur sa propre partition ou utiliser la même partition et vos données utilisateur, ce que je veux souvent faire.
Caleb
+1 merci pour le lien et les descriptions, c'est génial! :)
Mehrdad
/ usr doit contenir des fichiers spécifiques aux applications se trouvant sur le système d'exploitation et / ou des fichiers tiers. Ce n'est pas intriniscalement partageable! Bien que LSB plaide en faveur de leur conservation dans / opt. D'autre part, / usr / share peut contenir des fichiers partageables sur des machines de différentes architectures / versions de système d'exploitation. Ce sont toutes les quelques conventions même! Il est tout à fait possible (bien que beaucoup de travail acharné) d'utiliser une structure complètement différente. Il existe cependant d'autres conventions - comme l'architecture optimale optimale d'Oracle
symcbean
1
Une autre chose à garder à l'esprit à propos d'Unix est le concept que " tout est un fichier " (ou du moins en ressemble un). Par exemple, le contenu de / proc ressemble à des fichiers et des répertoires, mais le contenu est vraiment créé dynamiquement par le noyau lorsque vous y accédez. Cela signifie que vous pouvez utiliser les mêmes outils (ls, cat, etc.) pour accéder à ces informations.
KeithB
1
@symcbean Du FHS: "... / usr est des données partageables en lecture seule. Cela signifie que / usr doit être partageable entre divers hôtes conformes FHS ...". Évidemment, certains fichiers dépendent de l'architecture et certaines distributions attendent des hiérarchies de répertoires très différentes. La solution est de faire vos devoirs, comme un bon administrateur :)
bhinesley
18

Je ne répondrai pas sur ce qu'ils signifient tous (d'autres l'ont fait), mais donnez un peu de contexte historique.

Tout d'abord, rappelez-vous que UNIX a près de 40 ans, à l'époque de la bande de papier et des terminaux codés en dur de 300 bauds vers les ordinateurs centraux (le système Windows XP a près de 10 ans). La dactylographie était lente et le besoin d'efficacité dans la dactylographie l'emportait sur beaucoup d'autres considérations. C'est la raison des commandes de base très courtes (ie 'ls', 'cat', 'cc', 'dd', etc.). La même chose était avec les structures de répertoires. L'idée était que si la commande comportait plus de trois ou quatre caractères, le nom était trop long.

Le répertoire / usr contenait à l'origine les répertoires personnels de l'utilisateur car la plupart des commandes se trouvaient dans / bin et tous les fichiers de périphérique se trouvaient dans / dev. Plus tard, il a été pensé pour rendre le lecteur principal (le système de fichiers racine, '/') petit pour des temps de démarrage plus rapides. Ainsi, d'autres structures comme / usr / bin, / usr / include et / usr / lib ont vu le jour, où / usr était un "lecteur" distinct. Beaucoup plus tard, on pensait qu'il contenait les répertoires personnels des utilisateurs dans / home, encore un autre lecteur. Et bien plus tard que cela, d'avoir un / var (abréviation de variable / changable). Le répertoire / etc signifiait 'et cetera' car c'était l'emplacement de tous les fichiers de configuration du système. Le / mnt a été utilisé comme un emplacement temporaire pour accéder à un lecteur (souvent un lecteur de sauvegarde). Les répertoires comme / opt, / proc et / media sont venus beaucoup plus tard.

Il y en a beaucoup qui sont laissés de côté (comme / usr / local et / net), mais cela donne une brève description des raisons pour lesquelles les noms sont «moins intuitifs».

Arcege
la source
2
+1 J'adore le contexte historique, cela organise mon cerveau. :) Merci d'avoir pris le temps d'écrire ceci!
Mehrdad
5

Comme déjà mentionné ici, les distributions Linux utilisent principalement le FHS, voir ici pour un aperçu de type tutoriel, particulièrement bien adapté pour quelqu'un venant de Windows.

Remarque: les répertoires Windows semblent intuitifs, superficiellement. Mais permettez-moi de vous demander, à quoi appartiennent les paramètres d'un programme, en tant que *.inifichier dans le dossier des programmes, dans Documents and Settings\User( \Application Dataou \Local Settings\Application Data) ou dans le registre infâme? personne ne le sait, pas même Microsoft. Et ainsi nous pouvons continuer encore et encore.

Philomath
la source
1
Je pense que les noms des dossiers Windows 7 sont meilleurs. c'est-à-dire AppData \ Roaming vs AppData \ Local - ils décrivent le type de données qui s'y trouvent. Quant aux informations de configuration: je pense que je sais où les mettre quand je les vois, mais je ne peux pas bien les décrire, je suis d'accord. :)
Mehrdad