système de fichier

lundi 15 septembre 2008
par  Jerome ROBERT
popularité : 2%

IV. Le système de fichiers

 

Le système de fichier d’UNIX ou de LINUX permet le
stockage d’information, de programmes, de base de données… De plus, le
système de fichier permet une organisation hiérarchique des données.

Le terme barbare d’organisation hiérarchique
signifie tout simplement une structure composée de répertoires ( ou de
dossiers ), sous répertoire et de fichiers. L’image que l’on peut se donner
d’un système de fichier est un arbre dont les branches représentent les
répertoires et sous répertoire et les feuilles les fichiers.

L’armoire est une autre image qui peut refléter un
système de fichier. L’armoire et composée de tiroirs qui correspondent aux
répertoires et àl’intérieur de celui-ci il y a des dossiers qui peuvent
représenter un sous répertoire. Et au final, les rapports contenus dans les
dossiers sont des fichiers.

 

 

 

 

 

 

 

Le schéma ci-dessus représente une structure arborescente
hiérarchique d’un système.

Il possède des répertoires qui contient d’autres répertoires.

Le répertoire "/usr" possède huit sous répertoires.

 

 

A. Standard antérieur àPOSIX :

 

 

 

 

 

 

 



/

 Répertoire root, montée automatiquement
par le système au démarrage.

/bin 

La plupart des commandes de la section 1
(ls, cp, date, mail, ...).

/usr 

Répertoire et fichiers utilisés par le
système (applications, ...).

/usr/bin

 Suite des commandes de la section 1
(vi, man, more, ...).


/usr/include

 Fichiers d’include utilisés
pour le développement.

/usr/lib

 Fichiers librairie utilisés par les
applications et langages.

/usr/mail

 Boîte àlettre du système ;
chaque utilisateur ayant reçu du courrier y possède un fichier.

/usr/spool 

Utilisés pour le stockage des
requêtes des utilisateurs (pour l’impression notamment).

/usr/man

 Répertoires et fichiers du manuel d’aide
en ligne.

/usr/local/bin 

Commandes développées au
niveau local

/usr/contrib/bin 

Logiciels du domaine public.

/etc

 Fichiers de configuration et d’administration
du système.

/users (ou /home)

 Home-directories des
utilisateurs du système.

 

/tmp

 Fichiers temporaires.

 

/dev 

Fichiers spéciaux (devices), permettant
de communiquer avec tous les périphériques.

 

 

B. Norme POSIX (OSF/1 File System) :

 

Les fichiers statiques sont regroupés et subdivisés en
groupes de fichiers exécutables, bibliothèques et fichiers de démarrage du
système. Ils ne sont pas supposés connaître de modification lorsque le
système est actif.

Les fichiers dynamiques sont regroupés en raison de leurs
possibles modifications de taille ou de contenu ; ils sont subdivisés en
groupes : traces d’exécution, fichiers temporaires, fichiers de
configuration.

Les fichiers statiques peuvent être partagés par d’autres
systèmes. Les fichiers dynamiques sont privés àun système particulier, et
sont stockés séparément des binaires qui les exploitent.

 

De plus, les parties statiques du système d’exploitation
et des applications sont séparées.

Chaque application voit ses fichiers statiques et
dynamiques stockés séparément.

Cette nouvelle organisation offre des avantages
(fiabilité, sauvegardes) mais aussi des inconvénients (administration et
optimisations plus complexe).

 

 

 

/usr

 Commandes partageables du système d’exploitation,
librairies et aide en ligne.

 


/sbin

 Commandes minimum nécessaires au démarrage du
système d’exploitation et au montage d’autres FS.

/opt

 Applications.

/opt/<appl>/bin

 Commandes utilisateur.

/opt/<appl>/share/man 

Pages du manuel en ligne.

/opt/<appl>/lib  Librairies.
/stand 

Programmes de chargement du noyau et de
démarrage du système (boot).

/mnt

 Montages locaux.

/home 

Directories des utilisateurs du système.

/dev

Fichiers spéciaux.

/etc

 Fichiers de configuration du système ; ne
contient plus d’exécutables.

  /etc/opt/<appl>

 Fichiers de configuration d’une
application donnée.

/tmp 

Fichiers temporaires.

/var 

Informations dynamiques (traces, spool par
exemple).

/var/opt/<appl>

 Fichiers de consignation (trace)
d’une application donnée.

 

 

C. Les chemins d’accès

 

 

Pour accéder aux fichiers dans une structure Unix ou de
système àstructure hiérarchique, il y a deux possibilités.

  • les chemins d’accès absolus

  • les chemins d’accès relatifs

Le chemin d’accès absolu :

  • Donne la position complète d’un fichier ou d’un
    répertoire sur le système

  • Il doit toujours commencer àla racine du système
    donc par un /.

  • Il est indépendant de la position où on se trouve
    dans la structure hiérarchique.

Le chemin d’accès relatif :

  • Commence toujours par rapport àla position où on se
    trouve dans le système.

  • Ne commence jamais par un /.

  • Ne pas utilisé dans un script.

 

On ne peut pas dire qu’une méthode est plus court que l’autre,
cela dépend si on se trouve sur le chemin du fichier ou du répertoire
concerner ( car on gagne le chemin entre la racine est ça position ). On va
voire des exemples de suite.

Pour illustrer la différence entre les deux méthodes, on va
prendre le schéma ci-dessous comme base.

 

 

 

 

 

 

 

Chemins d’accès absolus : Chemins d’accès
relatifs :

/opt/oracle/bin  bin ou ./bin
/etc/opt

 ../../etc/opt

/opt/oracle

 .

/tmp

 ../../tmp

 

Le premier exemple permet de voir que le chemin relatif est
plus court que le chemin en absolu car on se trouve sur le parcours du
répertoire cible.

Mais on peut constater que le chemin absolu est plus court
quand on change de branche ( ou qu’on ne se trouve pas sur le chemin ).

Dans la plupart des cas un utilisateur reste dans son
répertoire de connexion et travail àl’intérieur de celui-ci. Donc quel est
le chemin le plus court dans ce cas ?

Alors le chemin en relatif sera le plus court.

 

A l’intérieur d’un répertoire il y a deux fichiers
particuliers qui sont le fichier « . Â » et le fichier 
« .. Â ».

  • Le fichier « . Â » correspond au répertoire
    courant soit /opt/oracle.

  • Le fichier « .. Â » correspond au répertoire
    parent soit /opt

Bon, la théorie c’est bien mais … Maintenant on va voir
les commandes pour la manipulation des répertoires et des fichiers. 

 

D. Manipulation des répertoires et des fichiers

 

Pour les commandes que nous allons voir nous allons utiliser
le schéma ci-dessous. Les fichiers . et .. ne sont pas représentés mais ils
existent. Pour les exemples le caractère $ représentera le prompt ( l’invite
de commande ) système.

 

 

1. La commande : ls 

 

La commande ls permet de visualiser la liste des noms
de répertoires ou de fichiers contenus dans un répertoire.

 

La syntaxe :

ls [ -Faldi ] [ noms de fichiers ou répertoire ]

 

Les options les plus utilisées sont :

  • -F Affiche un caractère àla fin du nom des fichiers et
    répertoire. 

     
    Un slash / pour un répertoire, une étoile * pour un
    exécutable, un @ pour un lien …

  • -a Affiche la liste de tous les fichiers et répertoires même commencent par
    un .
  • -l Affiche les noms de fichiers et répertoire avec une description
    détaillée.
  • -d Affiche le nom du répertoire est non son contenu.
  • -i Le numéro d’identification ( n° inode ) est affiché pour chaque
    fichiers.

 

Commande résultat
$ lstd_1 bin
$ ls –a .profile td_1 bin
$ ls bin f2 script
ls –F /home

jean/ pierre/

ls –dF bin

bin/

ls ../jean

td_1

ls –l

-rw-r—r— 1 pierre users 38 Jan 10 15:36 td_1

drwxr-xr-x 2 pierre users 1024 Jan 9 9:45 bin

 

ls –l :  dans le détail :

 

 

 

<2. La commande : cd

 

La commande cd ( change directory ) permet comme son
nom l’indique de changer de répertoire courant. La commande pwd permet
de connaître le répertoire courant dans lequel on se trouve.

Syntaxe : cd [-] [ argument ]

 

Commande résultat
pwd

/home/pierre

cd bin ; pwd

/home/pierre/bin

cd / ; pwd

/

cd ; pwd /home/pierre
cd - ; pwd /

La commande cd permet de changer de répertoire. De plus,
cette commande permet de revenir dans son répertoire de connexion ( home
directory ) en ne mettant par d’argument a la commande. Si on met un moins « 
  Â » ( cd - ) cela permet de revenir dans l’ancien répertoire dans
lequel on se trouvait précédemment.

 

3. La commande mkdir et rmdir

 

Syntaxe : mkdir Créer des répertoires

 

$ mkdir rep1 rep2

$ ls -l

drwxr-xr-x 2 user1 staff 512 Dec 24 23:35 rep1

drwxr-xr-x 2 user1 staff 512 Dec 24 23:35 rep2

$

 

Il est possible de créer, en un seul appel, plusieurs niveaux de
répertoires avec l’option -p .

mkdir -p rep1/rep2/rep3

 

 

Syntaxe : rmdir 

répertoire_vide

rmdir ne supprime que les répertoires vides. Cela signifie qu’ils ne
doivent contenir que les 2 répertoires cachés « . Â » et
« .. Â ».

$ rmdir rep2

$ rmdir rep1

rmdir : rep1 : Directory not empty

$

 

 

4. Les commandes cat, more, pg

 

 pg : permet paginer un flux d’information (n’existe pas sur tous
les systèmes)

Au bas de chaque écran, on obtient le caractère " :".

Quelques possibilités ( il faut toujours valider par Return ) :

  • +n Avancer de n écrans ( Return seul => 1 écran )
  • -n Remonter de n écrans
  • n Afficher l’écran n
  • $ Afficher le dernier écran
  •  !cde Exécuter une commande Unix
  • /expression Chercher une expression vers le bas et afficher l’écran
    correspondant
  •  ?expression Chercher l’expression vers le haut et afficher l’écran
    correspondant
  • q Quitter la commande

 

La commande peut être lancée avec des options :

pg -c fichier Affichage par effacements successifs
pg -p%d fichier Affichage du numéro de page au lieu du caractère  :
pg +n fichier Affichage àpartir de la ligne de numéro n
pg +/chaîne fichier Affichage àpartir de la première apparition d’une chaîne

  

more : permet paginer un flux d’information

Au bas de chaque écran, on obtient le message « More » suivi du pourcentage
de fichier déjàaffiché.

Quelques possibilités :

  • Return Avancer d’une ligne
  • Espace Avancer d’un écran
  • b Remonter d’un écran
  • = Afficher le numéro de la ligne courante
  • v Appeler l’éditeur vi positionné sur la ligne courante
  • /expression Chercher une expression
  •  !cde Exécuter une commande Unix
  • . Répéter la dernière commande
  • q ou Q Quitter la commande

La commande peut être lancée avec des options :

more -c fichier Affichage par effacements successifs
page fichier Idem
more +n fichier  Affichage àpartir de la ligne de numéro n
more +/chaîne fichier Affichage deux lignes avant l’apparition d’une chaîne

 

 

Les commandes pg ou more permettent d’arrêter le
défilement des sorties
d’autres commandes lorsqu’elles sont utilisées en deuxième membre d’un
« pipeline » Unix.

$ cal 2002 | more

2002

 

Jan Feb Mar

S M Tu W Th F S S M Tu W Th F S S M Tu W Th F S

1 2 3 4 5 1 2 1 2

6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9

13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15
16

20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22
23

27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30

31

Apr May Jun

S M Tu W Th F S S M Tu W Th F S S M Tu W Th F S

1 2 3 4 5 6 1 2 3 4 1

7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8

14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15

21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21
22

28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29

30

Jul Aug Sep

S M Tu W Th F S S M Tu W Th F S S M Tu W Th F S

—More—

 

cat : affiche le contenu d’un fichier sans la
paginer

 

Quelques possibilités :

-n numéro les lignes

-etv affiche les caractères non-imprimables avec les
tabulations

^I : représente une tabulation
$ : représente un retour chariot

 

cat [options] [ fichiers ]

 

Prévus, pour concaténer les contenu de plusieurs fichiers

 

cat fichier1 fichier2 fichier3

 

exemple :

cat /etc/vfstab

cat -evt /etc/vfstab

#device device mount FS fsck mount mount

#to mount to fsck point type pass at boot options

#

#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr ufs 1 yes -

fd - /dev/fd fd - no -

/proc - /proc proc - no -

/dev/dsk/c0t0d0s1 - - swap - no logging

/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no logging

/dev/dsk/c0t0d0s6 /dev/rdsk/c0t0d0s6 /usr ufs 1 no logging

/dev/dsk/c0t0d0s5 /dev/rdsk/c0t0d0s5 /var ufs 1 no logging

/dev/dsk/c0t0d0s4 /dev/rdsk/c0t0d0s4 /export ufs 1 no logging

swap - /tmp tmpfs - yes -

#device^I^Idevice^I^Imount^I^IFS^Ifsck^Imount^Imount$

#to mount^Ito fsck^I^Ipoint^I^Itype^Ipass^Iat boot^Ioptions$

#$

#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr^I^Iufs^I1^Iyes^I-$

fd^I-^I/dev/fd^Ifd^I-^Ino^I-$

/proc^I-^I/proc^Iproc^I-^Ino^I-$

/dev/dsk/c0t0d0s1^I-^I-^Iswap^I-^Ino^Ilogging$

/dev/dsk/c0t0d0s0^I/dev/rdsk/c0t0d0s0^I/^Iufs^I1^Ino^Ilogging$

/dev/dsk/c0t0d0s6^I/dev/rdsk/c0t0d0s6^I/usr^Iufs^I1^Ino^Ilogging$

/dev/dsk/c0t0d0s5^I/dev/rdsk/c0t0d0s5^I/var^Iufs^I1^Ino^Ilogging$

/dev/dsk/c0t0d0s4^I/dev/rdsk/c0t0d0s4^I/export^Iufs^I1^Ino^Ilogging$

swap^I-^I/tmp^Itmpfs^I-^Iyes^I-$

 

 

5. La commande cp :

 

syntaxe : cp fichier_source
fichier_distination

 

cp fic_source fic_cible

ou

cp fic1 fic2 fic3 ... répertoire

 

 

Si le fichier cible existe déjà, son contenu est remplacé par celui du
fichier source.

Si la cible est un répertoire, tous les fichiers de la liste d’arguments
sont copiés dans ce répertoire, avec le même nom.

 

ls -i L’option -i donne le
numéro d’inode

6903 fic1

cp fic1 fic2

ls -il

total 4

6903 -rw-r—r— 1 stage1 stage 41 Dec 12 17:12 fic1

6904 -rw-r—r— 1 stage1 stage 41 Dec 12 17:12 fic2

 

 

Quelques options usuelles

 

cp -i fic1 fic2 Demande de
confirmation si la cible existe

cp : overwrite fic2 ? n

cp -p fic1 fic2 Le fichier cible prend la date système du
fichier source

cp -r /tmp . Copie récursive de répertoire

ls -al

total 12

drwxr-xr-x 3 stage1 stage 1024 Dec 12 17:21 .

drwxr-xr-x 3 stage1 stage 1024 Dec 12 17:07 ..

-rw-r—r— 1 stage1 stage 41 Dec 12 17:12 fic1

-rw-r—r— 1 stage1 stage 41 Dec 12 17:12 fic2

drwxr-xr-x 2 stage1 stage 1024 Dec 12 17:21 tmp

 

 

6. La commande mv

 

mv Renommer ou déplacer des fichiers

La commande mv ressemble àcp mais elle
déplace ou renomme des fichiers ou répertoires.

Il y a comme options :

-i pour interactif

-f pour forcer

 

Dans un même FS, elle modifie uniquement les entrées dans
le répertoire. Si on effectue un mv d’un FS a un autre, alors il y
aura une copie des données puis une suppression des sources.

mv fic_ancien fic_nouveau Renommer un fichier
mv rep_ancien rep_nouveau Renommer un répertoire
mv fic1 fic2 fic3 ... rep  Déplacement vers un répertoire existant

 

Si un nouveau nom correspond àun fichier ordinaire existant, l’ancien
contenu est perdu.

ls -il

total 2

384 -rw-r—r— 1 stage1 stage 29 Dec 13 13:32 fic1

mv fic1 fic2

ls -il

total 2

384 -rw-r—r— 1 stage1 stage 29 Dec 13 13:32 fic2

 

 

7. La commande ln :

 

ln Créer des liens ou des liens symboliques

Créer un lien ( ou lien physique ) consiste àdonner un nom
supplémentaire àun fichier physique existant. On exploite cette possibilité,
la plupart du temps, àdes fins de programmation.Un lien ne peut pas référencer un répertoire ni s’étendre au-delàd’un
« file system  ».

Un lien symbolique a une existence physique et contient le nom du
fichier lié. Il peut désigner un répertoire et/ou un fichier d’un autre « file system
 ».

 

 

a) Les liens physiques

ln Crée un lien physique
(nom logique pour un fichier ou répertoire).

 

ln actuel nouveau

ou

ln fic1 fic2 fic3 ... rep

 

Un même fichier physique (identifié par un numéro d’inode
unique) a plusieurs noms dans le file system. Tous les noms (référence)
ont la même importance (il faut effacer tous les noms pour détruire le
fichier physique).

 


Exemples :

$ ln fichExistant fichLié

les 2 fichiers ont le même n° d’inode (ls -i)

$ ln /users/user1/f1 /users/user2/fich1

 

 


Limitations :

les liens physiques ne peuvent "traverser" les
File System,

un utilisateur ne peut créer de liens sur des directory.

 

Autres exemple :

 

ls -l

total 4

-rwxr-xr-x 1 stage1 stage 390 Dec 12 17:24 fic1

ln fic1 fic2 Création d’un lien ( même inode )

ls -il

total 4

389 -rwxr-xr-x 2 stage1 stage 390 Dec 12 17:24 fic1

389 -rwxr-xr-x 2 stage1 stage 390 Dec 12 17:24 fic2

 

b) Les liens symboliques :

ln -s Crée un lien
symbolique.

 

ln -s fichier lien

 

Un fichier (de type lien symbolique) contient la référence
d’un autre fichier ou d’un autre répertoire présent dans le file system.

Attention : Si on détruit ce qui est référencé, la
référence dessus (le lien symbolique) n’est pas automatiquement effacé.

 


Exemples : $ ln -s Répertoire RéférenceRep lien
symbolique.

$ cd /users/user1

$ ln -s RepC ../user2/RepD

 

 

ls /users/user2/RepD

f1 f2

 

ls -l /users/user2

lrwxr-xr-x 1 root root 4 Mar 27 10:35 RepD®
../user1/RepC

Autres exemples :

ln -s fic1 sfic1 Création d’un lien symbolique

ls -il

total 4

389 -rwxr-xr-x 2 stage1 stage 390 Dec 12 17:24 fic1

389 -rwxr-xr-x 2 stage1 stage 390 Dec 12 17:24 fic2

385 lrwxrwxrwx 1 stage1 stage 4 Dec 12 17:39 sfic1 -> fic1

ln -s /home monlien Création d’un lien symbolique vers un répertoire

ls -l

total 0

lrwxrwxrwx 1 stage1 stage 5 Dec 12 17:55 monlien -> /home

cd monlien

pwd Commande interne du Korn-shell

/home/stage1/monlien

/usr/bin/pwd Commande externe ( fichier disque )

/home

8. La commande rm :

 

rm Détruire des fichiers et des répertoires

 

rm -i fichier Demande de confirmation

fichier : ? n

rm -r repertoire Destruction de toute une sous-arborescence

rm -f fichier Force la destruction de fichiers protégés en
écriture

mais situés dans un répertoire non protégé

( Utile en programmation shell )

 

 

Un fichier physique n’est pas supprimé tant qu’il comporte encore
plusieurs liens.

En dehors des environnements graphiques, la suppression physique d’un
fichier est irréversible.

( Il n’existe pas de commande de type « undelete » sous Unix )

 

La suppression d’un lien symbolique ne supprime pas le fichier « pointé »
par ce lien.

La suppression d’un fichier n’entraîne pas non plus la suppression des
éventuels liens symboliques vers ce fichier, ce qui peut générer des liens
non résolus.

ln -s fic lien

ls -l

total 2

-rw-r—r— 1 stage1 stage 29 Dec 13 13:32 fic

lrwxrwxrwx 1 stage1 stage 3 Dec 13 14:25 lien -> fic

rm fic

cat lien

UX:cat : ERROR : Cannot open lien : No such file or directory


Commentaires  Forum fermé

Statistiques

Dernière mise à jour

mercredi 4 octobre 2023

Publication

273 Articles
Aucun album photo
Aucune brève
6 Sites Web
2 Auteurs

Visites

24 aujourd’hui
213 hier
864513 depuis le début
2 visiteurs actuellement connectés