Quelle est la différence entre la structure du répertoire et le système de fichiers ?
Les répertoires et le système de fichiers Unix / Linux se présentent comme suit:
Les deux répertoires suivants, nous connaissons évidemment les répertoires.
/home/abc/xyzdir1 --is a directory
/home/abc/xyzdir2 -- is a directory
les trois exemples suivants indiquent le système de fichiers.
/proc -- is a file system
/ -- is a file system
/bin -- is a file system
Comment puis-je identifier lequel est un système de fichiers et un répertoire à partir des extraits de code ci-dessus?
filesystems
directory-structure
proc
Premraj
la source
la source
/proc
,/
et/bin
de vos exemples), donc je ne suis pas clair comment vous voulez identifier la « différence »./proc
,/
Et/bin
sont des répertoires. Ce ne sont pas des "systèmes de fichiers". Voulez-vous dire que vous voulez identifier les répertoires qui sont également le point de montage (racine) de leur système de fichiers?Réponses:
Les gens n'utilisent pas le système de fichiers trop soigneusement. Dans vos exemples, je dirais que
/
,/bin
et/proc
sont les systèmes de fichiers , car une partition entière (comme/dev/sdb1
) est monté sur ces répertoires. Mon système Linux Arch n'a pas/bin
de système de fichiers, donc cet exemple n'est pas parfait mais ...L'inode numéro 2 est traditionnellement l'inode "racine" de tout un système de fichiers sur disque (qui est l'autre usage de l'expression).
/
,/boot
et/home
tous ont l'inode numéro 2, tandis que/proc
, qui est entièrement présenté par le noyau et n'a pas de présence sur le disque, a l'inode 1. Ces numéros d'inode indiquent qu'un système de fichiers entier sur disque ou un système de fichiers virtuel est monté en utilisant ce nom.La phrase «
/home/abc/xyzdir1
est un répertoire» signifie essentiellement qu'aucun système de fichiers sur disque n'est monté avec ce nom. Si vous exécutez la mêmels -lid
commande sur un répertoire, vous obtenez quelque chose comme ceci:L'inode numéro 3670039 est exactement l'inode allouée dans le système de fichiers sur disque monté (sur ma machine) à
/home
.Vous pouvez également trouver des systèmes de fichiers en appelant la
mount
commande. Il répertorie tous les systèmes de fichiers montés et leur emplacement de montage.la source
/
,/bin
et ce/proc
sont des systèmes de fichiers car une partition entière ... est montée sur ces répertoires. Ce n'est pas vrai pour/proc
, comme la réponse l'implique plus tard.Au risque de trop simplifier à l'extrême,
Depuis qu'on m'a demandé un rappel,
Si vous voulez du code, consultez la première moitié de cette réponse à Comment déterminer si un système de fichiers Linux appartient à un système en cours d'exécution - la partie qui vérifie la validation
root_dir
. Il fait juste ce que Bruce a dit; vérifier qu'il s'agit d'un répertoire et vérifier si son numéro d'inode est 1 ou 2.la source
Selon moi, un système de fichiers, au sens UNIX, est un moyen d'implémenter une arborescence de répertoires (structure de répertoires), ou plus précisément, un moyen d'implémenter l'API de système de fichiers UNIX. Le système de fichiers racine est soutenu par une implémentation particulière, et chaque fois que vous entrez dans un répertoire de point de montage, vous entrez un sous-arbre qui est soutenu par quelque chose de différent.
L'interface est toujours la même, mais dans un cas, vous avez une partition de disque particulière à l'arrière, dans un autre cas, il y aura un programme qui n'écrira même jamais sur un périphérique de stockage. Le
proc
système de fichiers sera soutenu par un logiciel qui expose les composants internes du noyau; antmpfs
sera sauvegardé par un logiciel qui écrit sur la RAM, et d'autres systèmes de fichiers peuvent écrire sur le réseau ou ailleurs.Au sens non UNIXy du terme, un système de fichiers est un moyen d'organiser le stockage des données.
ext4
,btrfs
,fat
Etntfs
sont des systèmes de fichiers dans ce sens, mais aussi dans le sens, ils unixy mettre en œuvre l'API du système de fichiers.proc
ne serait pas classé comme un système de fichiers dans ce paradigme, plus limité, car il n'organise pas le stockage de données.TL; DR:
la source
Bien que l'acceptation des répertoires ne soit pas ambiguë lorsque l'on parle de systèmes de fichiers, le système de fichiers peut signifier différentes choses selon ce dont vous parlez.
Dans vos exemples, tous les chemins répertoriés sont des répertoires, mais seuls certains d'entre eux sont également des points de montage de systèmes de fichiers.
Vous pouvez utiliser la
df
commande pour savoir sur quel système de fichiers se trouve un fichier ou un répertoire donné, et lamount
commande sur la plupart des implémentations Unix et Linux pour déterminer quels systèmes de fichiers sont présents sur votre machine, leur type et leurs points de montage. par exemple:La déclaration
/bin
est qu'un système de fichiers est douteux,/bin
est presque toujours monté/
.la source
Commencez par corriger votre hypothèse concernant un système de fichiers et un répertoire. Un système de fichiers contient un ou plusieurs répertoires. En utilisant vos exemples,
/proc
,/
et/bin
sont des répertoires. Ce ne sont pas des «systèmes de fichiers» en soi, mais ils peuvent être la racine de leurs systèmes de fichiers respectifs.Si vous souhaitez identifier les répertoires qui sont également le point de montage (racine) de leur système de fichiers, vous pouvez utiliser quelque chose comme ceci:
la source
Le système de fichiers est une méthodologie pour organiser et stocker logiquement de grandes quantités de données de sorte que le système est facile à gérer. un système de fichiers se compose de fichiers, de relations avec d'autres fichiers, ainsi que des attributs (type de fichier, nom de fichier, taille de fichier, propriétaire du fichier, horodatage du fichier) de chaque fichier.
Répertoires : par exemple, le système de fichiers Unix est essentiellement composé de fichiers et de répertoires. Les répertoires sont des fichiers spéciaux qui peuvent contenir d'autres fichiers. le répertoire le plus haut est
/
(barre oblique), les répertoires se trouvant directement sous les répertoires système./
Racine du système de fichiers Linux/bin
Les fichiers exécutables binaires sont conservés ici/boot
Les fichiers liés au démarrage sont conservés ici/dev
Les fichiers de l'appareil sont conservés ici/etc
Les fichiers de configuration à l'échelle du système sont conservés ici/home
Emplacement des répertoires personnels des utilisateurs réguliers/lib64
Les bibliothèques pour les exécutables binaires sont conservées ici/mnt
Point de montage temporaire pour DVD-Rom, lecteur flash USB./opt
Les programmes facultatifs sont installés ici comme les fichiers de programme dans les fenêtres/proc
Pseudo-système de fichiers du noyau/root
Répertoire personnel de superutilisateur root/sbin
Les fichiers exécutables binaires du système sont conservés ici/tmp
Les fichiers temporaires sont conservés ici/usr
Système de fichiers utilisateur/var
Les fichiers variables sont conservés ici/srv
est un dossier de service, contient des données spécifiques au site qui sont traitées par ce système.src et pour plus
Les deux répertoires suivants sont des répertoires définis par l'utilisateur:
la source
Si vous avez juste besoin d'une commande qui vous indique si path est un répertoire ou non, utilisez mountpoint (1) .
Pour moi ça imprime
La bonne chose est que l'état de sortie indique à nouveau la même chose afin que vous puissiez l'utiliser dans vos scripts comme ceci:
la source