système de fichier
par
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 |
/bin |
La plupart des commandes de la section 1 |
/usr |
Répertoire et fichiers utilisés par le |
/usr/bin |
Suite des commandes de la section 1 |
|
Fichiers d’include utilisés |
/usr/lib |
Fichiers librairie utilisés par les |
/usr/mail |
Boîte à lettre du système ; |
/usr/spool |
Utilisés pour le stockage des |
/usr/man |
Répertoires et fichiers du manuel d’aide |
/usr/local/bin |
Commandes développées au |
/usr/contrib/bin |
Logiciels du domaine public. |
/etc |
Fichiers de configuration et d’administration |
/users (ou /home) | Home-directories des
|
/tmp |
Fichiers temporaires.
|
/dev |
Fichiers spéciaux (devices), permettant |
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,
|
|
Commandes minimum nécessaires au démarrage du |
/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 |
/mnt |
Montages locaux. |
/home |
Directories des utilisateurs du système. |
/dev |
Fichiers spéciaux. |
/etc |
Fichiers de configuration du système ; ne |
/etc/opt/<appl> |
Fichiers de configuration d’une |
/tmp |
Fichiers temporaires. |
/var |
Informations dynamiques (traces, spool par |
/var/opt/<appl> |
Fichiers de consignation (trace) |
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 |
$ ls | td_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 20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 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 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é