# Structure du système de fichiers

Pour organiser le système de fichier, il y a deux structures
principales,

La **partition** qui est une partie du disque dur. Ainsi, on peut
découper le disque en plusieurs partitions (exemple, partition système,
partition de données), ainsi cela peut permettre d'isoler des données du
reste ou encore d'avoir plusieurs systèmes d'exploitations sur un même
disque (dual-boot).

La deuxième structure est le **répertoire** (ou **dossier**), qui
contient les informations sur les fichiers qu'il contient (nom,
emplacement, taille, pointeur vers le premier bloc).

Ainsi, la structure interne d'un répertoire doit permettre de localiser,
créer, supprimer, renommer, visualiser des fichiers ou encore aller dans
un autre répertoire.

### Organisation des répertoires

Les répertoires peuvent être à un niveau, deux niveaux ou sous forme
d'arbre (c'est ce qui est utilisé aujourd'hui). Le répertoire de départ
est appelé le **répertoire racine** (ou **root directory**), ainsi, on
va représenter ce répertoire racine par un `/` ou un `\`.

Ainsi, un fichier peut être défini soit par un chemin d'accès
**absolu**, c'est le chemin d'accès partant du répertoire racine
(exemple `/home/snowcode/image.png`).

On peut aussi définir un fichier par un chemin d'accès **relatif**,
c'est un chemin d'accès partant d'un autre répertoire. Voici par exemple
un chemin d'accès relatif au dossier `/home` : `snowcode/image.png` ou
encore `./snowcode/image.png`.

La manière de supprimer un dossier qui contient des fichiers ou d'autres
dossiers dépendent du système d'exploitation. Par exemple, sous Linux,
pour supprimer un dossier, il faut faire `rm -r mondossier` le `-r`
signifiant qu'il va supprimer de manière récursive.

### Fonctionnement des liens

Sous Windows, on utilise des **raccourcis**, les raccourcis sont
simplement des fichiers `.lnk` désignant un autre emplacement.

En revanche, sous Unix, on utilise des **liens symboliques**, c'est une
entrée particulière (comme un fichier ou un dossier) qui désignent un
emplacement différent.

À la différence de Windows, si un programme ouvre un lien symbolique, il
va automatiquement ouvrir le fichier (ou le dossier) qui est pointé par
ce dernier. C'est donc très intéressant pour faire apparaître un même
fichier à plusieurs endroits.

> Sous Linux, un lien symbolique peut être créé avec la commande
> `ln -s <chemin de fichier vers lequel pointer> <position du lien>`

### Opération de montage

L'opération de montage permet de rendre accessible un système de
fichier. Il peut s'agir d'une autre partition, d'un autre média (DVD,
USB, etc), et le format peut être différent de la partition actuelle
(NTFS, FAT, ext4, etc).

> Le format de systèmes de fichiers **FAT**, bien qu'ancien et un peu
> limité, a l'avantage d'être supporté par tous les systèmes
> d'exploitations. En revanche, **NTFS** est un système Windows,
> **ext4** est un système Linux et **APFS** est un format de système
> macOS.

Durant cette opération de montage, le système vérifie la cohérence et
donne accès aux informations.

Cette opération de montage peut être **implicite** (le système le fait
automatiquement) ou **explicite** (l'utilisateur·ice doit lui demander
spécifiquement de monter le système).

Ainsi dans Linux, si je connecte une clé USB et que je la monte dans un
dossier, je pourrais aller dans le dossier et interagir avec les
fichiers comme si de rien était alors qu'en vérité ces fichiers sont sur
la clé USB.