Gestion des fichiers sous UNIX

Sur tout système, la gestion des fichiers est nécessaire, y compris UNIX, pour cela je vais présenter brièvement la structure des répertoires, les permissions ainsi que quelques commandes.

Sommaire

  • Structure du système de fichiers.
  • Permissions des fichiers et des répertoires.
  • Les commandes de base.
    • Notions de redirection
    • Noms de fichiers valides
    • Les commandes utilisateur
      • mkdir et rmdir
      • cd et pwd
      • ls
      • chmod
      • ln
      • cp
      • rm
      • mv
  • Commandes plus élaborées
    • find
    • compress et gzip
    • sum
    • quota
    • tar

Structure du système de fichiers

Elle est hiérarchique et composée par des fichiers et des répertoires. Un petit dessin vaut mieux qu’un long discours :

Cette arborescence peut un peu varier d’un système à un autre. Chaque répertoire a un rôle particulier.

Permissions des fichiers et des répertoires

Un répertoire n’est rien d’autre qu’un fichier particulier contenant des noms de fichiers et de répertoires. Un utilisateur peut appartenir à plusieurs groupes, et un fichier appartient uniquement à un seul groupe.

Permissions sur les fichiers

Un fichier a 3 permissions principales (rwx) pour 3 types d’utilisateurs: le propriétaire du fichier (owner), les utilisateurs du même groupe que cette personne (group), et les autres utilisateurs du système (other).

  • r: droit de lecture du fichier.
  • w:  droit d’écriture du fichier.
  • x: droit d’exécution du fichier.

Une bonne protection d’un fichier est realisée en lui donnant la permission suivante : -rw-------

Permissions des repertoires

Pour un répertoire, les rwx signifient :

  • r: droit de lecture du répertoire (ex. avec la commande ls), mais n’intervient pas pour les fichiers à l’intérieur de ce répertoire.
  • w: permission d’écriture dans le répertoire, donc de supprimer ou créer des fichier ou des sous-répertoires.
  • x: permission de traversée du répertoire (cd).

Les commandes de base

Notions de redirection

Pour la gestion des fichiers, il est souvent utile d’utiliser les redirections de l’entrée standard ainsi que de la sortie standard et des erreurs. Le principe est simple :

commande > fichier exécute la commande appelée  “commande” et sort le résultat dans un fichier appelé “fichier” en remplaçant le contenu de ce fichier.
ls >> liste exécute la commande appelée “ls” et sort le résultat dans un fichier appelé “liste” en ajoutant la sortie à la fin du fichier.
cat < /etc/passwd execute la commande appellée “cat” en prenant comme entrée le fichier “/etc/passwd” et affiche sur la sortie standard (en principe le terminal) le résultat.
ls -l /| more exécute la commande appelle “ls” avec comme paramètre “-l /” et envoie le résultat à la commande more.

Noms de fichiers valides

Seul le caractère <tt>/</tt> est interdit dans un nom de fichier, donc il peut aussi bien s’appeller “a.c” comme “Bonjour.c.moi-qui-suit-la et me-promene\ tranquillement:.h“; mais il vaut mieux choisir un nom court et significatif.

Afin de se retrouver dans les fichiers, des extensions ont été mises afin d’identifier un type de fichier facilement, par exemple “.c” pour un fichier source en C, “.pl” pour un script en perl, “.ps” pour les fichiers en Postscript, “.tar” pour les fichiers archives avec l’aide de tar.

Les commandes utilisateur

Création et suppression de répertoires : mkdir et rmdir (makdirectory et remove directory) :

Syntaxe : mkdir nom_du_repertoire

On crée un répertoire appelé nom_du_repertoire. Pour plus de documentation sur les possibilités de mkdir ou rmdir, il suffit de taper man mkdir ou man rmdir.

Se promener dans les répertoires: cd et pwd (change directory et print working directory)

Syntaxe : cd [nom_du_repertoire]

Exemple :
cd /home/kevink
pwd
/home/kevink
cd tmp
pwd
/home/kevink/tmp
cd ..
pwd
/home/kevink
cd
pw>
/home/fekette

Pour plus de documentation sur les possibilités de cd ou pwd, il suffit de taper man cd ou man pwd.

Lister les fichiers et répertoires : ls (list files)

Syntaxe : ls [-options] [fichier(s)]

Exemples :

Le premier caractère lors de l’exécution de ls -l correspond au type de fichier : “d” pour un répertoire, “l” pour un lien symbolique, “b” et “c” pour les fichiers spéciaux et “s” pour les sockets.

Les autres informations correspondent respectivement les permissions, le propriétaire et le groupe du fichier, puis la taille en octets, la date de dernière modification du fichier, et son nom.

Les options le plus souvent utilisées dans ls sont :

  • -l : affiche en long format
  • -a : affiche les fichiers commencant par le caractère “.”
  • -R : liste les fichiers de manière récursive.

Pour plus d’informations sur la commande ls, taper man ls.

Changer les droits d’accès d’un fichier : chmod (change mode)

Syntaxe : chmod [permission] fichierchmod [agoa][+-=][rwxstugo] fichier.

Avant tout, voyons un tableau permettant de comprendre les permissions numériques par rapport aux rwx…

Voyons quelques exemples :


Pour plus d’infos à propos de chmod, taper man chmod.

Creer un lien : ln (link)

Le lien est un peu comparable au racourci au niveau de l’utilisateur. En fait pour mieux comprendre le principe il faut connaire la structure du systeme de fichiers, car chaque fichier pointe sur une inode, et un lien est en fait un lien direct vers l’inode ou se trouve le fichier original.

Syntaxe : ln [option] fichier1 fichier2 (le fichier fichier1 doit exister et le fichier fichier2 ne doit pas exister).

Exemples :

kewl@cosmos:/tmp/foo$ ls -l
total 4
-rw-r--r-- 1 kewl kewl 1501 Oct 29 14:50 main.html
kewl@cosmos:/tmp/foo$ ln main.html edit.html
kewl@cosmos:/tmp/foo$ ls -li
total 8
266414 -rw-r--r-- 2 kewl kewl 1501 Oct 29 14:50 edit.html
266414 -rw-r--r-- 2 kewl kewl 1501 Oct 29 14:50 main.html
kewl@cosmos:/tmp/foo$ ln -s main.html index.html
kewl@cosmos:/tmp/foo$ ls -li
total 8
266414 -rw-r--r-- 2 kewl kewl 1501 Oct 29 14:50 edit.html
266417 lrwxrwxrwx 1 kewl kewl    9 Oct 29 14:50 index.html -> main.html
266414 -rw-r--r-- 2 kewl kewl 1501 Oct 29 14:50 main.html
kewl@cosmos:/tmp/foo$

Pour plus d’informations a propos de la commande ln, taper man ln.

Copier des fichiers : cp (copy)

Syntaxe : cp [options] fichier1 fichier2, ou cp [options] fichier1 .... fichiern repertoire

Le fichier fichier1 est copié sous le nom fichier2. Si fichier2 existe, il est remplacé (l’option -i permet de demander confirmation d’écrasement dans ce cas).

Exemples :

kewl@cosmos:/tmp/foo$ cp main.html main.copy.html
kewl@cosmos:/tmp/foo$ ls -li
total 8
260713 -rw-r--r-- 1 kewl kewl 1501 Oct 29 14:54 main.copy.html
266414 -rw-r--r-- 1 kewl kewl 1501 Oct 29 14:50 main.html
kewl@cosmos:/tmp/foo$ ls -li
total 32
266416 -rw-r--r-- 1 kewl kewl 19666 Oct 29 14:55 alpha
260840 -rw-r--r-- 1 kewl kewl   258 Oct 29 14:55 beta
266414 drwxr-xr-x 2 kewl kewl  4096 Oct 29 14:55 delta
266417 -rw-r--r-- 1 kewl kewl  2859 Oct 29 14:55 gamma
kewl@cosmos:/tmp/foo$ cp alpha beta gamma delta
kewl@cosmos:/tmp/foo$ ls -li . delta
.:
total 32
266416 -rw-r--r-- 1 kewl kewl 19666 Oct 29 14:55 alpha
260840 -rw-r--r-- 1 kewl kewl   258 Oct 29 14:55 beta
266414 drwxr-xr-x 2 kewl kewl  4096 Oct 29 14:56 delta
266417 -rw-r--r-- 1 kewl kewl  2859 Oct 29 14:55 gamma

delta:
total 28
260713 -rw-r--r-- 1 kewl kewl 19666 Oct 29 14:56 alpha
266419 -rw-r--r-- 1 kewl kewl   258 Oct 29 14:56 beta
266420 -rw-r--r-- 1 kewl kewl  2859 Oct 29 14:56 gamma

Pour plus d’informations sur les possibilités de la commande cp, taper man cp.

Effacer des fichiers : rm (remove)

Et oui, rm ne sert pas à lire des fichier Real Media…

Syntaxe : rm [-ifr] fichier1 fichier2 ... fichiern

Ces options sont les fondamentales :

  • -i : mode interactif, demande confirmation pour effacer les fichiers.
  • -r : si un répertoire a été donné, efface le répertoire ainsi que tous les fichiers contenus a l’intérieur de celui ci de manière recursive.
  • -f : force l’effacement des fichiers, et n’affiche pas de messages d’erreur.

Attention:  rm * efface sans confirmation tous les fichiers du repertoire courant, et rm -rf * efface de manière recursive tous les fichiers et répertoires à partir du point courant. Pour éviter cet accident, on peut définir un alias tel que : alias rm 'rm -i', qui peut se mettre dans son .profile ou même dans /etc/profile.

kewl@cosmos:/tmp/foo/delta$ ls -l
total 36
-rw-r--r-- 1 kewl kewl 19666 Oct 29 14:56 alpha
-rw-r--r-- 1 kewl kewl   258 Oct 29 14:56 beta
-rw-r--r-- 1 kewl kewl  2859 Oct 29 14:56 gamma
kewl@cosmos:/tmp/foo/delta$ rm alpha beta
kewl@cosmos:/tmp/foo/delta$ ls -l
total 4
-rw-r--r-- 1 kewl kewl 2859 Oct 29 14:56 gamma

Pour plus d’informations sur les options de rm, taper man rm.

Renommer des fichiers et répertoires : mv (move)

La syntaxe est comparable à celle de cp, donc je passerai vite, taper man mv pour plus d’informations.

Autres commandes plus elaborées

Trouver des fichiers : find

find permet de faire une recherche de manière recursive dans le système de fichiers de la machine, et d’y effectuer toute sorte d’opérations.

Syntaxe : find [chemin] [expression]

La commande va rechercher de manière récursive dans l’arborescence des fichiers à partir du répertoire chemin en lui donnant une expression (ex: -name).

Exemples:
Rechercher tous les fichiers appeles core a partir de /home ainsi que /root :
find /home /root -name core -print

Rechercher tous les fichiers appeles core et *.o et les effacer :

find / -type f \( -name core -o -name '*.o' \) -exec rm {} \;

Rechercher tous les fichiers qui n’ont pas été accedés depuis plus de 30 jours :
find / -mtime +30 -atime +30 -print

Rechercher tous les fichiers dont la taille est supérieure à 2000 blocs à partir de /tmp :
find /tmp -type f -size +2000 -print

Pour plus d’informations sur la commande find, taper man find.

Compresser des fichiers : compressgzip …

Avant tout, à l’heure actuelle (1997) gzip est plutôt utilisé que compress pour des raisons de compression, et aussi gunzip est compatible avec les fichiers compressés par compress.

Syntaxe : gzip [option] fichier1 [... fichiern]

Exemple :

gzip est accompagné des commandes zcat, zless, zdiff, zgrep… qui effectuent une commande telle que cat, less, diff ou grep mais à l’intérieur d’un fichier compressé en .gz.

Pour plus d’informations sur la commande gzip, tape man gzip.

Calculer des checksums sur les fichiers : sum

Le principe du checksum est une somme de contrôle d’un fichier qui peut être calculée différemment selon le programme, permettant ainsi de verifier qu’un fichier n’ait pas été modifié ou a subi des dommages lors d’un transfert; aussi il donne le nombre de blocks utilisés par le fichier.

Syntaxe : sum [-r] [-s] fichier

Signification des options :
-r : n’utilise pas -s
-s : utilise l’algorithme base sur System V

Donc si le fichier a été modifié, le resultat de sum n’est pas le même.

Il existe aussi la commande md5sum (sous Linux), ou md2md4 et md5 sur d’autres systemes, le principe reste le meme que sum, mais avec des algorithmes plus élaborés. Pour plus de sécurité, il existe même sha512sum.

Vérification des quota disque : quota

Le quota est une limite d’utilisation disque par un utilisateur, qui peut etre utile sur une grosse machine afin d’éviter que certains ne manque de place pour sauver leurs travaux.

Syntaxe : quota [-option] utilisateur ou quota [-option] -g groupe

Exemple :
quota -v
Donne les infos sur l’utilisation du quota sur l’utilisateur qui exécute la commande.

Pour plus d’informations, man quota

Archiver des fichiers : tar

Syntaxe : tar [commmande] fichier(s)

Exemples :

Pour creer une archive test.tar et y ajouter tous les fichiers .c :
tar cf test.tar *.c

Pour archiver tout un système sur la bande de sauvegarde et afficher l’état d’avancement :
tar cfv /dev/st0 /
(non recommandé car cela va archiver également le contenu de la mémoire du système etc... par l'intermédiaire de /proc)

Pour extraire une archive :
tar xf test.tar

Pour extraire alpha.c dans test.tar :
tar xf test.tar alpha.c

Pour lister les fichiers dans une archive :
tar tf test.tar

Avec GNU tar, il est possible d’exécuter automatiquement une compression à l’aide de gzip/bzip2 lors de la création, du listage ou de l’extraction d’une archive, par exemple créer une archive comprimée contenant tous les fichiers de /home/ftp/pub.

tar cfz test.tar.gz /home/ftp/pub/*

Plus d’informations? man tar.

One thought on “Gestion des fichiers sous UNIX”

  1. Je suis à la recherche des connaissances pour me perfectionner dans l’administration de système de fichiers

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

New day, new adventure